diff options
Diffstat (limited to 'IkiWiki/Plugin/anonok.pm')
-rw-r--r-- | IkiWiki/Plugin/anonok.pm | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/IkiWiki/Plugin/anonok.pm b/IkiWiki/Plugin/anonok.pm new file mode 100644 index 000000000..0e74cbfad --- /dev/null +++ b/IkiWiki/Plugin/anonok.pm @@ -0,0 +1,51 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::anonok; + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "getsetup", id => "anonok", call => \&getsetup); + hook(type => "canedit", id => "anonok", call => \&canedit); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 0, + section => "auth", + }, + anonok_pagespec => { + type => "pagespec", + example => "*/discussion", + description => "PageSpec to limit which pages anonymous users can edit", + link => "ikiwiki/PageSpec", + safe => 1, + rebuild => 0, + }, +} + +sub canedit ($$$) { + my $page=shift; + my $cgi=shift; + my $session=shift; + + my $ret; + + if (exists $config{anonok_pagespec} && length $config{anonok_pagespec}) { + if (pagespec_match($page, $config{anonok_pagespec}, + location => $page)) { + return ""; + } + else { + return undef; + } + } + else { + return ""; + } +} + +1 |