]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/CGI.pm
* Add a separate pass to find page links, and only render each page once,
[ikiwiki.git] / IkiWiki / CGI.pm
index fe89e2758b924cdf8063eb1d03ea3f082be360dc..8b01ca3f89ab004a81d04d4066d081c3d3baea65 100644 (file)
@@ -314,9 +314,11 @@ sub cgi_prefs ($$) { #{{{
                comment => "(".htmllink("", "", "PageSpec", 1).")");
        $form->field(name => "locked_pages", size => 50,
                comment => "(".htmllink("", "", "PageSpec", 1).")");
+       $form->field(name => "banned_users", size => 50);
        
        if (! is_admin($user_name)) {
                $form->field(name => "locked_pages", type => "hidden");
+               $form->field(name => "banned_users", type => "hidden");
        }
 
        if ($config{httpauth}) {
@@ -331,6 +333,10 @@ sub cgi_prefs ($$) { #{{{
                        value => userinfo_get($user_name, "subscriptions"));
                $form->field(name => "locked_pages", force => 1,
                        value => userinfo_get($user_name, "locked_pages"));
+               if (is_admin($user_name)) {
+                       $form->field(name => "banned_users", force => 1,
+                               value => join(" ", get_banned_users()));
+               }
        }
        
        decode_form_utf8($form);
@@ -350,6 +356,10 @@ sub cgi_prefs ($$) { #{{{
                                userinfo_set($user_name, $field, $form->field($field)) || error("failed to set $field");
                        }
                }
+               if (is_admin($user_name)) {
+                       set_banned_users(grep { ! is_admin($_) }
+                                       split(' ', $form->field("banned_users")));
+               }
                $form->text("Preferences saved.");
        }
        
@@ -671,7 +681,7 @@ sub cgi () { #{{{
                }
                else {
                        $session->param("name", $q->remote_user());
-                       if (!userinfo_get($session->param("name"),"regdate")) {
+                       if (! userinfo_get($session->param("name"), "regdate")) {
                                userinfo_setall($session->param("name"), {
                                        email => "",
                                        password => "",
@@ -680,6 +690,13 @@ sub cgi () { #{{{
                        }
                }
        }
+
+       if (userinfo_get($session->param("name"), "banned")) {
+               print $q->header(-status => "403 Forbidden");
+               $session->delete();
+               print "You are banned.";
+               exit;
+       }
        
        if ($do eq 'create' || $do eq 'edit') {
                cgi_editpage($q, $session);