X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22..85e97bd9753676f261449a1dbbaeb0dc038bb91e:/IkiWiki/Plugin/signinedit.pm

diff --git a/IkiWiki/Plugin/signinedit.pm b/IkiWiki/Plugin/signinedit.pm
index 08932e2f6..31160c02f 100644
--- a/IkiWiki/Plugin/signinedit.pm
+++ b/IkiWiki/Plugin/signinedit.pm
@@ -3,14 +3,24 @@ package IkiWiki::Plugin::signinedit;
 
 use warnings;
 use strict;
-use IkiWiki 2.00;
+use IkiWiki 3.00;
 
-sub import { #{{{
+sub import {
+	hook(type => "getsetup", id => "signinedit", call => \&getsetup);
 	hook(type => "canedit", id => "signinedit", call => \&canedit,
 	     last => 1);
-} # }}}
+}
 
-sub canedit ($$$) { #{{{
+sub getsetup () {
+	return
+		plugin => {
+			safe => 1,
+			rebuild => 0,
+			section => "auth",
+		},
+}
+
+sub canedit ($$$) {
 	my $page=shift;
 	my $cgi=shift;
 	my $session=shift;
@@ -18,8 +28,14 @@ sub canedit ($$$) { #{{{
 	# Have the user sign in, if they are not already. This is why the
 	# hook runs last, so that any hooks that don't need the user to
 	# signin can override this.
-	IkiWiki::needsignin($cgi, $session);
-	return "";
-} #}}}
+        if (! defined $session->param("name") ||
+            ! IkiWiki::userinfo_get($session->param("name"), "regdate")) {
+	        return "" unless exists $IkiWiki::hooks{auth};
+		return sub { IkiWiki::needsignin($cgi, $session) };
+	}
+	else {
+		return "";
+	}
+}
 
 1