Meine erste Lösung zum Thema Zugriffsberechtigungen pro Seite im MediaWiki ist nicht mehr so ganz praktikabel, da nur Admins die Seiten hinzufügen können und das immer im Quelltext des Wikis tun müssen (zumindest in der LocalSettings.php
). Daher habe ich jetzt eine kleine Extension programmiert, mit der man mit Tags im Artikel selbst den Zugriff beschränken kann.
Funktionsbeschreibung
- Anonyme Benutzer dürfen nichts, außer sich anmelden (weitere erlaubte Seiten können einfach hinzugefügt werden).
- Angemeldete Benutzer dürfen darüberhinaus weitere definierbare Seiten anschauen.
- Mitglieder definierbarer Gruppen bzw. einzelne Benutzer dürfen alles (explizite Freischaltung im Quelltext der Extension).
- Angemeldete Benutzer, die weder selbst freigeschaltet, noch in einer der freigeschalteten Gruppen sind, dürfen nur Artikel lesen bzw. ändern, für die es ihnen durch die Tags erlaubt ist.
Technische Umsetzung
- Zunächst habe ich mich in der MediaWiki-Dokumentation noch einmal die grundlegende Herangehensweise bei der Programmierung einer Extension angeschaut und die Tags definiert, indem ich die Datei
TagsUserPermissions.php
im Ordnerextensions/
angelegt habe. Diese habe ich dann in derLocalSettings.php
inkludiert:include("extensions/TagsUserPermissions.php");
- Danach konnte ich nun schon einmal meine selbstdefinierten Tags im Wiki eingeben:
LesenBenutzer
LesenGruppe
AendernBenutzer
AendernGruppe
Die Namen dürften recht sprechend sein, sie sind aber im Quelltext der Extension beliebig änderbar. Die Tags werden in den Artikeln nicht angezeigt, sie sind nur in deren Quelltext sichtbar.
- Die eigentliche Arbeit übernimmt nun eine Funktion, die ich als Hook-Funktion dem Event-Handler UserCan zugewiesen habe. Wie das geht, steht in der MediaWiki-Dokumentation. Auf jeden Fall wird die Funktion nun immer dann aufgerufen, wenn intern überprüft wird, ob der aktuelle Benutzer auf der aktuellen Seite eine Aktion (lesen, ändern, verschieben etc.) ausführen darf. Kurz gesagt liest sie per Regular Expressions die Tags aus und prüft die Gruppenzugehörigkeit des aktuellen Benutzers bzw. direkt den Benutzernamen. Die Extension besteht aus
einer einzigen Dateizwei Dateien (die Extension und eine SpecialPage, auf der man die vergebenen Berechtigungen einsehen kann), die ich natürlich gerne zum Download anbiete. Ein Klick auf die Dateien öffnet sie auch direkt im Browser (inklusive Syntax-Highlighting). Die SpecialPage muss im Ordnerincludes/
abgelegt werden.
Hallo Stefan!
Ich versuche seit 24h (ich hab noch wenig geschlafen) genau das in mein mediawiki zu integriergen, was du anscheinend geschafft hast. leider bin ich kein php-guru – könntest du mir das ein bisschen genauer erklären?
Herzlichen Dank!
Was geht denn bei dir nicht? Kommen irgendwelche Fehlermeldungen?
Du musst wirklich lediglich die beiden Dateien herunterladen (bzw. den Code in neue Dateien kopieren) und in den jeweiligen Ordnern ablegen. Dann trägst du in die LocalSettings.php die oben genannte Zeile ein und das war’s!
Dann kannst du über die Tags im Quelltext der Artikel die Zugriffsberechtigungen steuern. Das sähe z.B. so aus, wenn Benutzer “Dieter” den Artikel ändern können soll: <AendernBenutzer>Dieter</AendernBenutzer>
Hallo,
ich habe mich gerade gefeut deine Lösung zu mediawiki und Userberechtigungen zu finden. Leider funktioniert bei mir die Einbindung nicht. Für welche Mediawiki-Version wurde die Extension erstellt?
Ich erhalte den Fehler:
Wenn ich die Extension auskommentiere ist der Fehler weg.
mfg
Okay,
der XHTML code-Tag funtioniert nicht!
Hier nochmal die Fehlermeldung:
Interner Fehler
Detected bug in an extension! Hook setPermissionsFromTags failed to return a value; should return true to continue hook processing or false to abort.
@Sunny: Sorry, die Extension pflege ich nicht mehr aktiv weiter. Aber versuch doch mal den Fehler selbst zu beheben und gib als Returnwert in setPermissionsFromTags() einfach true zurück…