X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ee1ad53c4c2710aa7ded61bdc56f3a8cce514f22..54f600af14bf6dc067ffc30ec6f22d517001fe99:/IkiWiki/Plugin/signinedit.pm?ds=sidebyside 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