MediaWiki is meant to be an open platform and was not conceived with fine-grained access control in mind (like ACL). For most cases, that’s ok, but on a project I’m working on I’ve felt the need for keeping some parts of my wiki private and secure from indirect access using transclusions or searches.
In order to achieve that, I’ve entirely revamped the Semantic ACL extension, which had been left unmaintained for some years, but had great potential.
Here’s the list of features (more will be added when needed):
- Works through transclusions: If a page is transcluding a page or a subset of the page that has a protection in place, users not allowed to view that content will see a placeholder message instead.
- Works with files: If a file is protected, users not allowed to see the file will be denied access to the file page and will see placeholder content where the file is used in other pages. If a file is uncategorized or part of category that an anonymous user is not allowed to see, placeholder content will be displayed instead.
- Works with search results: Search results including a page that a user is not allowed to see won’t display the content of the page, only its title.
- Works with Structured Discussions and talk pages: A talk page or a structured discussion will get the same protection as its associated content page.
- Works within the wiki: No need to edit LocalSettings.php to modify restrictions, everything is done from inside your wiki.
- Works with many use cases: Restrictions can be enabled for anonymous/registered users, user groups or individual users.
All the docs are on the extension’s page.