Extension:PageOwnership

PageOwnership is a permissions manager, by which system administrators or entitled users can assign multiple layers of permissions to specific users or groups, either at page and namespace level, or for the entire wiki, through a user-friendly interface. Supports transclusion, cache and Semantic MediaWiki.

Starting from version 1.1.0 PageOwnership aims to support in a rigorous way all the permissions and rights available in MediaWiki, through a user-friendly interface, and do not anymore relies on arbitrary constraints, like the former subdivision in "editors", "readers", "admin", without a strict correspondence in the MediaWiki's permissions/rights model!



Installation
Download and place the file(s) in a directory called  in your   folder.
 * Add the following code at the bottom of your LocalSettings.php
 * Run  (this will install the required tables)
 * ✅ – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Features
PageOwnership allows to assign multiple sets or layers or rights to specific users and groups, with regard of the entire wiki or based on specific pages, sub-pages and namespaces. This allows to comply with virtually any "preventing-access" need, ranging from just using PageOwnership as an interface for managing Mediawiki's permissions and rights in a traditional way, up to assigning specific pages and their sub-pages to specific users and groups, while preventing other groups of users from accessing or editing them.

PageOwnership, due to its flexibility, also allows to enforce an implicit moderation on your wiki. You don't directly moderate pages (or page versions) as in FlaggedRevs or Approved Revs, instead, you assign a page and its sub-pages to authorized user(s) or group(s) which can edit them. When the page is ready for publishing, either you grant to everybody access to it, or you provide the actual editors with additional rights related to that page and sub-pages.

(custom "multi toggle button" OOUI widget)

Managing permissions
PageOwnership's Permissions Manager can be accessed both from any content page of the wiki, through the navigation menu shown above, or from the list of special pages.

The Permissions Manager consists of two different special pages (or "steps" within a unique special page by a technical point of view), the first with all the sets of permissions related to the entire wiki (if the Permissions Manager has been accessed from the list of special pages) or to the related page (of any namespace), and the second with the specific rights and permissions assigned to specific users or groups.

Here is the navigable list of permissions assigned to a "Test page", and the button "Add permissions" by which you can add/edit an existing set of permissions.



The first entry assigns the permissions types "Reading" and "Editing" to the user "Account test 1" with specific additional rights provided by PageOwnership which extend the same rights to sub-pages of the related page as well, plus it removes a right included in the standard set of "Editing" permissions ("Move pages")

'''The second entry matches all the anonymous and registered users, and assign to them no rights. By this way all the anonymous and registered users are prevented either to access and edit "Test page" and any of its sub-pages.'''



---

List of permissions
In the List of permissions page (accessible both from the action menu on top of Wiki articles and from the list of Special:SpecialPages of the Wiki) you can find the list of assigned permissions related to that specific page or throughout all the Wiki (when accessed from the list of Special Pages) and of course to assign new permissions and editing existing ones.



(in the scenario above the editing of the page has been granted to the group "Interface-admin" plus to 2 specific users, and the access to the page has been granted to all visitors)

The centralized list of permissions (when accessed from the list of Special Pages instead than from the action menu on top of Wiki articles) can be filtered and includes fields with the related page and the user who created the permission.



---

Navigation panel
PageOwnership creates a list of pages to which logged-in registered users have been assigned (as users, not as members of a group) in the standard navigation panel, so that they can quickly navigate to such pages.



---

Implicit moderation & use-cases
Moderation or the safeguard of "protected spaces" is a critical aspect for many WIKIs. PageOwnership allows to enforce an implicit moderation on your wiki using the same mechanism used for privileges, plus optionally the use of the global parameter, by which newly created pages can be automatically assigned both to one or more admins, and to the user who is creating the page as an editor. By this way, the page remains only accessible to admins or editors of the page until other users are not granted with the  privilege.

Here are some use-cases for the extension.


 * (Permissive) Standard users can create new unassigned pages (pages which haven't been assigned to anyone) and once created they will be visible to everyone


 * (implicit moderation) Registered users can create new unassigned pages and they will be accessible and editable only by them and the auto-assigned admins. When you are happy with those pages the admins can grant the access to everyone or grant the auto-assigned editors with admins privileges.


 * (restrictive) Standard users cannot create new pages. You have to provide a form from which to collect the requests for "new ownership" from users and then to assign the permissions to them manually.


 * (subpages) Settings as above, but you create a set of owned subpages (for instance assigned to an admin) with  privilege, so new users can create new pages only in specific paths of your wiki.

Magic word/parser function
PageOwnership includes a Magic word/parser function (called either using  or  ) (case insensitive) to display the list of pages assigned to the logged-in registered user. This can be used by other templates for various purposes.

Configuration
Besides protection based on ownership of specific pages, PageOwnership allows to set additional permissions to regular pages (i.e. pages on the main namespace which have not been assigned to anyone). To do so, just grant desired users or groups with the right

(the settings above will deny anonymous users from editing regular pages, while it will be allowed to registered users)

Global parameters