Extension:GroupPermissionsManager

What can this extension do?
This extension allows modifying the underlying Group Permissions via a special page interface. It accomplishes this by writing a PHP file in a /config subdirectory of the extension. It's easy-to-use User Interface gives a grouped alphabetical listing of all rights that can be assigned with radio button toggles, as well as being aware of whether it is modifying an existing group or adding a new one. Deletion of groups is also possible, but this extension will not remove users from the deleted groups (see Special:RemoveUnusedGroups for that). Also, implicit groups are unable to be deleted via this interface. Modifications made via this extension are logged publicly on-wiki.

Two more special pages this extension adds are Special:SortPermissions and Special:RemoveUnusedGroups. SortPermissions allows you to add/delete sort types and permissions, as well as sort them (permissions can only be deleted from the sorting, thus putting them into the "Miscellaneous" category, it is currently impossible to totally remove a permission). SortPermissions requires the grouppermissions right. RemoveUnusedGroups removes users from unused (deleted) groups that Special:UserRights cannot detect (aka they cannot be removed via the normal interface). It currently is a one-shot process, you cannot choose which groups to remove or which users to remove it from; it does everything at once. RemoveUnusedGroups requires the userrights right.

In addition to the Special Page, this extension implements a finer-grained permissions system into MediaWiki. Namely, rights were added that control viewing of specific pages, and a few more were added or modified that change how editing rights are assigned.

Usage
Special:GroupPermissions: Browse to Special:GroupPermissions (will be listed under "Restricted Special Pages" in 1.12 wikis or the "Wiki data and tools" in 1.13+ wikis), and enter in a group name. If the group doesn't exist, an alphabetical listing of all assignable rights is given, each set by default at 'false'. If the group does exist, an alphabetical listing of all assignable rights is given with each set at the current value of that right (so if 'sysop' could 'delete', that would be shown as 'true'). If the group exists and it is deletable (see above section), then a group deletion form is displayed as well. Change the values you want, enter a comment, and click the confirm button. An explanation of the three toggle options is below:
 * True: Any user in that group has that right.
 * False: The group does not have the right (overrides previous trues of that right, e.g. in DefaultSettings.php and LocalSettings.php). Any other "True" defined in other group will override this setting
 * Never: Anyone belonging to this group loses the right irregardless of any other "True" or "False" declarations

Special:SortPermissions: Browse to Special:SortPermissions (will be listed under "Restricted Special Pages" in 1.12 wikis or the "Wiki data and tools" in 1.13+ wikis). You will be presented with a list of every permission and it's current sort status. Choose one of the options to sort it. If you have javascript enabled on your browser, you can add new groups and new sort types via two other forms at the bottom, as well as delete sort types and remove permissions from the sorting matrix (again, javascript must be enabled on your browser for that to work and removing permissions does not delete the permission, it only removes the current sort type set on it). Please note that if you add a sort type, it does not add the relevant MediaWiki message for you. You must edit MediaWiki:Grouppermissions-sort-sorttype, replacing "sorttype" with the type that you added. Added permissions do not do anything unless there is an extension or something else that uses it.

Special:RemoveUnusedGroups: Browse to Special:RemoveUnusedGroups (will be listed under "Restricted Special Pages" in 1.12 wikis or the "Users and groups" in 1.13+ wikis). Then, click the button. Simple as that.

Finer-grained permissions system: See.

Download instructions
For version 2.0, which works with 1.9+ wikis, please see this revision. For the latest version, grab it from Subversion.

Installation
If you are running MediaWiki version 1.12.x or a 1.13.0 revision lower than r37292, you will need to follow the directions here if you want the edit right's description to display properly!

To install this extension, add the following to LocalSettings.php:

Then, create the directory  and make sure that it is writable by the webserver. If you do not do this, the extension will not work. Afterwards, browse to your wiki's Special:Version to confirm installation of the extension.

User rights
The grouppermissions right is required to use Special:GroupPermissions and Special:SortPermissions. It is given to bureaucrats by default, but you may wish to change this.

The userrights right is required to use Special:RemoveUnusedGroups, also given to bureaucrats by default.

Other rights are detailed below, whether they were added or tweaked:
 * viewsource:Can view page source if unable to edit the page
 * raw:Can use action=raw
 * render:Can use action=render
 * info:Can use action=info, if enabled
 * credits:Can use action=credits
 * history:Can view page history listings (as of now does not prevent viewing old versions of a page
 * search:Can search the wiki
 * contributions:Can view contributions pages, including own
 * recentchanges:Can view recent changes
 * edittalk:Can edit existing discussion pages (does not require the 'edit' permission)
 * edit:Can edit existing non-discussion pages
 * createpage:Can create non-discussion pages (does not require the 'edit' permission)
 * createtalk:Can create discussion pages (does not require the 'edit' or 'edittalk' permissions)

Patch
If you are running MediaWiki version 1.12.x or a 1.13.0 revision lower than r37292, you will need to follow the directions below if you want the edit right's description to display properly!

Edit, and add the following in the beginning of the wfMsgGetKey function from: to the following:

Feedback
Please leave all bug reports, feature requests, etc. on the |talk page. Thank you.