diff options
Diffstat (limited to 'IkiWiki/Plugin/signinedit.pm')
-rw-r--r-- | IkiWiki/Plugin/signinedit.pm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/signinedit.pm b/IkiWiki/Plugin/signinedit.pm new file mode 100644 index 000000000..31160c02f --- /dev/null +++ b/IkiWiki/Plugin/signinedit.pm @@ -0,0 +1,41 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::signinedit; + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "getsetup", id => "signinedit", call => \&getsetup); + hook(type => "canedit", id => "signinedit", call => \&canedit, + last => 1); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + section => "auth", + }, +} + +sub canedit ($$$) { + my $page=shift; + my $cgi=shift; + my $session=shift; + + # 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. + 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 |