diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-10-08 17:47:38 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-10-08 17:47:38 -0400 |
commit | d3ca495e61e0e9d66095b1aba2fd1995e564e841 (patch) | |
tree | 1421821b8f15867d5ab5563ca6a4353e3021832c /IkiWiki.pm | |
parent | 240b58c36c0d3ed9ecf89fc005364b769d0caf8e (diff) | |
download | ikiwiki-d3ca495e61e0e9d66095b1aba2fd1995e564e841.tar ikiwiki-d3ca495e61e0e9d66095b1aba2fd1995e564e841.tar.gz |
lockedit: Support specifying which users (and IP addresses) a page is locked for. This supports most of the ACL type things users have been wanting to be done. Closes: #443346 (It does not control who can read a page, but that's out of scope for ikiwiki.)
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r-- | IkiWiki.pm | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm index 82370f430..633c51381 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1919,4 +1919,61 @@ sub match_creation_year ($$;@) { #{{{ } } #}}} +sub match_user ($$;@) { #{{{ + shift; + my $user=shift; + my %params=@_; + + if (! exists $params{user}) { + return IkiWiki::FailReason->new("no user specified"); + } + + if (defined $params{user} && lc $params{user} eq lc $user) { + return IkiWiki::SuccessReason->new("user is $user"); + } + elsif (! defined $params{user}) { + return IkiWiki::FailReason->new("not logged in"); + } + else { + return IkiWiki::FailReason->new("user is $params{user}, not $user"); + } +} #}}} + +sub match_admin ($$;@) { #{{{ + shift; + shift; + my %params=@_; + + if (! exists $params{user}) { + return IkiWiki::FailReason->new("no user specified"); + } + + if (defined $params{user} && IkiWiki::is_admin($params{user})) { + return IkiWiki::SuccessReason->new("user is an admin"); + } + elsif (! defined $params{user}) { + return IkiWiki::FailReason->new("not logged in"); + } + else { + return IkiWiki::FailReason->new("user is not an admin"); + } +} #}}} + +sub match_ip ($$;@) { #{{{ + shift; + my $ip=shift; + my %params=@_; + + if (! exists $params{ip}) { + return IkiWiki::FailReason->new("no IP specified"); + } + + if (defined $params{ip} && lc $params{ip} eq lc $ip) { + return IkiWiki::SuccessReason->new("IP is $ip"); + } + else { + return IkiWiki::FailReason->new("IP is $params{ip}, not $ip"); + } +} #}}} + 1 |