]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/attachment.pm
add user and ip support to attachment pagespecs
[git.ikiwiki.info.git] / IkiWiki / Plugin / attachment.pm
index c1d1d1c6030f253d37c92a54731f7a256b090aae..a5c42d638a6651ac1796f6db973227a14482b371 100644 (file)
@@ -101,7 +101,10 @@ sub formbuilder (@) { #{{{
                            length $allowed_attachments) {
                                $allowed=pagespec_match($filename,
                                        $allowed_attachments,
-                                       file => $tempfile);
+                                       file => $tempfile,
+                                       user => $session->param("name"),
+                                       ip => $ENV{REMOTE_ADDR},
+                               );
                                last if $allowed;
                        }
                }
@@ -306,4 +309,38 @@ sub match_ispage ($$;@) { #{{{
        }
 } #}}}
 
+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");
+       }
+       else {
+               return IkiWiki::FailReason->new("user is $params{user}, not $user");
+       }
+} #}}}
+
+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