banned_users move to setup file, stage 1
authorJoey Hess <joey@kodama.kitenet.net>
Fri, 1 Aug 2008 21:37:24 +0000 (17:37 -0400)
committerJoey Hess <joey@kodama.kitenet.net>
Fri, 1 Aug 2008 21:39:17 +0000 (17:39 -0400)
IkiWiki.pm
IkiWiki/CGI.pm
IkiWiki/UserInfo.pm
debian/NEWS
debian/changelog
doc/banned_users.mdwn
po/ikiwiki.pot

index bfa85343d26e173d6648fc9da2314a8202903629..d11ceb8963b2c2d123c623e99aa3a3ea8f59a130 100644 (file)
@@ -284,6 +284,13 @@ sub getsetup () { #{{{
                safe => 0, # regexp
                rebuild => 1,
        },
+       banned_users => {
+               type => "string",
+               default => [],
+               description => "users who cannot use the wiki",
+               safe => 1,
+               rebuild => 0,
+       },
        wiki_file_prune_regexps => {
                type => "internal",
                default => [qr/(^|\/)\.\.(\/|$)/, qr/^\./, qr/\/\./,
index 4cb45895b964c8872be96104f88ceda78e5efb85..97ca6714f3cb78c05eb4428df08caa139f69e42e 100644 (file)
@@ -18,7 +18,6 @@ sub printheader ($) { #{{{
        } else {
                print $session->header(-charset => 'utf-8');
        }
-
 } #}}}
 
 sub showform ($$$$;@) { #{{{
@@ -231,16 +230,24 @@ sub cgi_prefs ($$) { #{{{
                fieldset => "admin");
        
        my $user_name=$session->param("name");
+
+       # XXX deprecated, should be removed eventually
        if (! is_admin($user_name)) {
                $form->field(name => "banned_users", type => "hidden");
        }
-
        if (! $form->submitted) {
                $form->field(name => "email", force => 1,
                        value => userinfo_get($user_name, "email"));
                if (is_admin($user_name)) {
-                       $form->field(name => "banned_users", force => 1,
-                               value => join(" ", get_banned_users()));
+                       my $value=join(" ", get_banned_users());
+                       if (length $value) {
+                               $form->field(name => "banned_users", force => 1,
+                                       value => join(" ", get_banned_users()),
+                                       comment => "deprecated; please move to banned_users in setup file");
+                       }
+                       else {
+                               $form->field(name => "banned_users", type => "hidden");
+                       }
                }
        }
        
@@ -258,12 +265,18 @@ sub cgi_prefs ($$) { #{{{
                        userinfo_set($user_name, 'email', $form->field('email')) ||
                                error("failed to set email");
                }
+
+               # XXX deprecated, should be removed eventually
                if (is_admin($user_name)) {
                        set_banned_users(grep { ! is_admin($_) }
                                        split(' ',
                                                $form->field("banned_users"))) ||
                                error("failed saving changes");
+                       if (! length $form->field("banned_users")) {
+                               $form->field(name => "banned_users", type => "hidden");
+                       }
                }
+
                $form->text(gettext("Preferences saved."));
        }
        
@@ -638,6 +651,25 @@ sub cgi_editpage ($$) { #{{{
                }
        }
 } #}}}
+       
+sub check_banned ($$) { #{{{
+       my $q=shift;
+       my $session=shift;
+
+       my $name=$session->param("name");
+       if (defined $name) {
+               # XXX banned in userinfo is deprecated, should be removed
+               # eventually, and only banned_users be checked.
+               if (userinfo_get($session->param("name"), "banned") ||
+                   grep { $name eq $_ } @{$config{banned_users}}) {
+                       print $q->header(-status => "403 Forbidden");
+                       $session->delete();
+                       print gettext("You are banned.");
+                       cgi_savesession($session);
+                       exit;
+               }
+       }
+}
 
 sub cgi_getsession ($) { #{{{
        my $q=shift;
@@ -722,14 +754,8 @@ sub cgi (;$$) { #{{{
                }
        }
        
-       if (defined $session->param("name") &&
-           userinfo_get($session->param("name"), "banned")) {
-               print $q->header(-status => "403 Forbidden");
-               $session->delete();
-               print gettext("You are banned.");
-               cgi_savesession($session);
-       }
-
+       check_banned($q, $session);
+       
        run_hooks(sessioncgi => sub { shift->($q, $session) });
 
        if ($do eq 'signin') {
index 109a6cb5f24eff1c54e3e9ac722babb12a3753cb..dcf99da09bda07fbb5a643f3f4fa6a9d3a436f78 100644 (file)
@@ -74,6 +74,7 @@ sub is_admin ($) { #{{{
        return grep { $_ eq $user_name } @{$config{adminuser}};
 } #}}}
 
+# XXX deprecated, should be removed eventually
 sub get_banned_users () { #{{{
        my @ret;
        my $userinfo=userinfo_retrieve();
@@ -83,6 +84,7 @@ sub get_banned_users () { #{{{
        return @ret;
 } #}}}
 
+# XXX deprecated, should be removed eventually
 sub set_banned_users (@) { #{{{
        my %banned=map { $_ => 1 } @_;
        my $userinfo=userinfo_retrieve();
index 4aac33b809bf41080d4e1a3816141365664f74de..0f9db4ea386e58c2151624285041210e2567a400 100644 (file)
@@ -1,3 +1,15 @@
+ikiwiki (2.60) unstable; urgency=low
+
+  Admin preferences are moving from the web interface to the setup file.
+  There are three new options in the setup file: locked_pages, banned_users,
+  and allowed_attachments. The admin prefs page can still be used, but
+  that's deprecated, and the prefs will be hidden if a value is not already
+  set. If a value is set in the web interface, you're encouraged to move that
+  setting to your setup file now, since version 3.0 will remove the deprecated
+  web interface.
+
+ -- Joey Hess <joeyh@debian.org>  Fri, 01 Aug 2008 17:02:14 -0400
+
 ikiwiki (2.52) unstable; urgency=low
 
   All wikis need to be rebuilt on upgrade to this version. If you listed your
index 033b9fbc68bed9e3e47e1bf8f1d7cb50ab79037d..f40701691cd9d7589830b132fcdda1272cd62baa 100644 (file)
@@ -11,10 +11,7 @@ ikiwiki (2.60) UNRELEASED; urgency=low
   * Version control backends promoted to first-class plugins.
   * ikiwiki-update-wikilist: Add -r switch to remove. Default behavior is now
     always to add.
-  * The locked pages configuration is moving to a locked_pages option in the
-    setup file, and the allowed attachments configuration to
-    allowed_attachments. The admin prefs page can still be used for these, but
-    that's depreacted and will only be shown if there's currently a value.
+  * Start moving admin preferences from the web interface to the setup file.
 
  -- Joey Hess <joeyh@debian.org>  Mon, 21 Jul 2008 11:35:46 -0400
 
index 11e744b109ad927efb8c58fa55e856dd9125035a..d2bec90f0459d9016461293bb4c68fa8849f078c 100644 (file)
@@ -1,6 +1,4 @@
-Wiki admins can ban users via their Preferences.
-
-The list of banned users is space delimited.
+Banned users can be configured in the setup file.
 
 If a banned user attempts to use the ikiwiki CGI, they will receive a 403
 Forbidden webpage indicating they are banned.
index cefd4d711c0b6874ee10bec55a8befb0188e170e..69a1851f7981a54d8b494e3b107f0ca319e98edb 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-01 15:43-0400\n"
+"POT-Creation-Date: 2008-08-01 17:10-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,62 +16,62 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../IkiWiki/CGI.pm:140
+#: ../IkiWiki/CGI.pm:139
 msgid "You need to log in first."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:172
+#: ../IkiWiki/CGI.pm:171
 msgid "login failed, perhaps you need to turn on cookies?"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:190 ../IkiWiki/CGI.pm:526
+#: ../IkiWiki/CGI.pm:189 ../IkiWiki/CGI.pm:539
 msgid "Your login session has expired."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:211
+#: ../IkiWiki/CGI.pm:210
 msgid "Login"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:212
+#: ../IkiWiki/CGI.pm:211
 msgid "Preferences"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:213
+#: ../IkiWiki/CGI.pm:212
 msgid "Admin"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:267
+#: ../IkiWiki/CGI.pm:280
 msgid "Preferences saved."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:326
+#: ../IkiWiki/CGI.pm:339
 #, perl-format
 msgid "%s is not an editable page"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:437 ../IkiWiki/Plugin/brokenlinks.pm:24
+#: ../IkiWiki/CGI.pm:450 ../IkiWiki/Plugin/brokenlinks.pm:24
 #: ../IkiWiki/Plugin/inline.pm:306 ../IkiWiki/Plugin/opendiscussion.pm:17
 #: ../IkiWiki/Plugin/orphans.pm:28 ../IkiWiki/Render.pm:78
 #: ../IkiWiki/Render.pm:148
 msgid "discussion"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:493
+#: ../IkiWiki/CGI.pm:506
 #, perl-format
 msgid "creating %s"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:511 ../IkiWiki/CGI.pm:539 ../IkiWiki/CGI.pm:549
-#: ../IkiWiki/CGI.pm:584 ../IkiWiki/CGI.pm:629
+#: ../IkiWiki/CGI.pm:524 ../IkiWiki/CGI.pm:552 ../IkiWiki/CGI.pm:562
+#: ../IkiWiki/CGI.pm:597 ../IkiWiki/CGI.pm:642
 #, perl-format
 msgid "editing %s"
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:729
+#: ../IkiWiki/CGI.pm:667
 msgid "You are banned."
 msgstr ""
 
-#: ../IkiWiki/CGI.pm:758 ../IkiWiki/CGI.pm:759 ../IkiWiki.pm:1086
+#: ../IkiWiki/CGI.pm:784 ../IkiWiki/CGI.pm:785 ../IkiWiki.pm:1096
 msgid "Error"
 msgstr ""
 
@@ -182,11 +182,11 @@ msgstr ""
 msgid "prohibited by allowed_attachments"
 msgstr ""
 
-#: ../IkiWiki/Plugin/attachment.pm:184
+#: ../IkiWiki/Plugin/attachment.pm:187
 msgid "bad attachment filename"
 msgstr ""
 
-#: ../IkiWiki/Plugin/attachment.pm:226
+#: ../IkiWiki/Plugin/attachment.pm:229
 msgid "attachment upload"
 msgstr ""
 
@@ -203,12 +203,6 @@ msgstr ""
 msgid "There are no broken links!"
 msgstr ""
 
-#: ../IkiWiki/Plugin/bzr.pm:12 ../IkiWiki/Plugin/git.pm:15
-#: ../IkiWiki/Plugin/mercurial.pm:12 ../IkiWiki/Plugin/monotone.pm:15
-#: ../IkiWiki/Plugin/svn.pm:11 ../IkiWiki/Plugin/tla.pm:10
-msgid "cannot use multiple rcs plugins"
-msgstr ""
-
 #: ../IkiWiki/Plugin/conditional.pm:18 ../IkiWiki/Plugin/cutpaste.pm:22
 #: ../IkiWiki/Plugin/cutpaste.pm:37 ../IkiWiki/Plugin/cutpaste.pm:53
 #: ../IkiWiki/Plugin/testpagespec.pm:17
@@ -817,15 +811,19 @@ msgstr ""
 msgid "refreshing wiki.."
 msgstr ""
 
-#: ../IkiWiki.pm:410
+#: ../IkiWiki.pm:417
 msgid "Must specify url to wiki with --url when using --cgi"
 msgstr ""
 
-#: ../IkiWiki.pm:1069
+#: ../IkiWiki.pm:461
+msgid "cannot use multiple rcs plugins"
+msgstr ""
+
+#: ../IkiWiki.pm:1079
 #, perl-format
 msgid "preprocessing loop detected on %s at depth %i"
 msgstr ""
 
-#: ../IkiWiki.pm:1557
+#: ../IkiWiki.pm:1567
 msgid "yes"
 msgstr ""