Author: netocrat
Description:
When using MediaWiki as a solution for a non-Wikipedia site, it's sometimes
useful to configure it so that by default pages are not editable except by
logged-in users. Then there are often pages that it would be handy to make an
exception for so that anonymous users can edit them. There isn't a simple way
to achieve this exception in the default codebase that I've found, but by using
the new(ish) ProtectionForm and Title::getRestrictions() functionality, it's
possible to achieve this with small patches to EditPage.php and Title.php.
I'll attach the patches; there are a couple of other additions that also need to
be applied:
- add these lines to LocalSettings.php (be careful that $wgGroupPermissions
isn't overwritten later in the file and that these lines occur after
DefaultSettings.php has been included):
array_splice($wgRestrictionLevels, 1, 0, '*');
$wgGroupPermissions['*']['edit'] = false;
- Edit MediaWiki:Protect-level-* to read:
Allow all including anons/not-logged-in
Now to set an individual page to be editable by anonymous users, log in as a
sysop and click the 'protect' tab and select 'Allow all including
anons/not-logged-in' (click 'Unlock move permissions' prior to this if anonymous
users should not also be given permission to move the page). To revert the page
to edits-by-logged-in-users-only, again click the 'protect' tab and choose
'(default)'.
There might then be some confusion due to the tab reading 'protect' when already
only logged in users can edit the page, but it should be easy to explain what
the '(default)' state is, perhaps by editing MediaWiki:Protect-text. The more
dangerous opposite of the tab reading 'unprotect' when in fact the page is not
at all restricted won't (shouldn't) occur due to this patch.
This provides a starting-point for finer-grained ACLs in MediaWiki - a
group-based default per-right that can be overridden per-page.
The patches were generated against 1.6.5; they apply without error to present
svn, and seem to function as expected against svn code.
Version: 1.7.x
Severity: enhancement