Joachim Durchholz wrote:
My idea was to have "user groups" in the wiki, and a per-page list of groups that may read or write it.
The docs were of limited help. A remark somewhere in them reads "it's possible to do your own permission scheme", but I found nothing that supported that claim. In fact all the permission stuff that's in Mediawiki seems to be hardcoded, at least a few quick greps indicated so.
You can theoretically build a users/groups permissions scheme using the user_rights and cur_restrictions fields (both are comma-separated sets of text tokens and can be fairly arbitrarily extended), but as you noticed this isn't supported by the current code which is hard-coded and special-cased for a few values.
If you want to try this, start by rewriting Title::userCanEdit() and Title::userCanRead(), which control write and read access to given pages. You'd also need to add a more intelligent way to assign page permissions & user privileges.
My questions are: How do I go ahead? Are there better ways to achieve what we want?
Honestly, I'd recommend you just give all your users read/write permission to all pages... If they change things they're not supposed to it's recorded in the audit trail and incorrect changes can be easily reverted.
-- brion vibber (brion @ pobox.com)