Rechteverwaltung im Backend
Dieser Artikel stellt Ihnen ein
Konzept vor, das sich auch in großen TYPO3-Projekten mit
mehreren hundert Benutzern, wie dem Intranet der „Deutschen Welle“,
bewährt hat.
Problemstellung an einem Beispiel
Um das vorzustellende Konzept besser
erklären zu können, soll der abgebildete Seitenbaum als
Beispiel dienen. Unser Testprojekt beinhaltet demnach neben der
Startseite mit allgemeinen Neuigkeiten vier weitere Seitenbereiche
verschiedener Abteilungen.
Die Anforderung besteht darin, dass
die verschiedenen Abteilungen nur das Recht haben, ihren eigenen
Seitenbereich zu pflegen, es aber auch Redakteure gibt, die alle
Abteilungsseiten pflegen dürfen. Auch innerhalb der Abteilungen
soll es eine Aufgabenteilung geben: Einige Benutzer sind nur für
die Eingabe von Neuigkeiten zuständig, andere für das
Pflegen bestimmter Inhalte und wieder andere sollen auch
Seiteninhalte, wie beispielsweise Plugins, einfügen dürfen.
Verschiedener Typen von Backend-Benutzergruppen
Um im Backend eine übersichtliche
und wartungsfreundliche Vergabe von Berechtigungen zu haben,
gruppieren wir verschiedene Berechtigungsarten. Dafür werden
mehrere Typen von Benutzergruppen im Backend unterschieden, jeder Typ
steht für eine bestimmte Aufgabe. Die eigentlichen
Nutzerberechtigungen eines Redakteurs setzen sich schließlich
aus der Zugehörigkeit zu mehreren Gruppen zusammen. Das hat
nicht nur den Vorteil, später neue Benutzer schneller einpflegen
zu können, sondern folgt auch dem Grundsatz, möglichst
redundanzfrei zu sein. Das verringert späteren Wartungsaufwand.
Um die Übersicht zu bewahren,
sind die Backend-Nutzergruppen durch entsprechende Kürzel vor
dem Namen gekennzeichnet. Es werden die folgenden Typen
unterschieden, auf die im Folgenden näher eingegangen wird:
- Seiten-Mount-Gruppen (Kennzeichnung „SM:“)
- File-Mount-Gruppen (Kennzeichnung „FM:“)
- Rechtegruppen (Kennzeichnung „R:“)
- TSConfig-Gruppen (Kennzeichnung „TS:“)
- Seitengruppen (Kennzeichnung „S:“)
- Metagruppen (Kennzeichnung „META:“)
Seiten-Mount-Gruppen
Diese Gruppen werden mit den Zeichen
„SM:“ am Anfang des Namens versehen, und wir legen fest, welchen
Ausgangspunkt man im Seitenbaum schließlich angezeigt bekommt.
In diesen Gruppen wird also lediglich der Ausgangspunkt unter der
Einstellung „DB Mount“ gesetzt. Der Name einer
Seiten-Mount-Gruppe sollte dem Namen des ausgewählten
Ausgangspunktes entsprechen. Für unser Beispiel benötigen
wir demnach die Seiten-Mount-Gruppen „SM: alle Abteilungen“ sowie
jeweils eine Seiten-Mount-Gruppe für die Abteilungsseiten.
File-Mount-Gruppen
Mit diesen Gruppen fassen wir
lediglich Dateifreigaben („File Mounts“) zusammen und legen somit
fest, welche Ordner letztlich für einen Benutzer sichtbar sind.
Verwendet man die DAM-Erweiterung, wählt man die entsprechenden
DAM-Kategorien für die Nutzergruppe aus. Für unser Beispiel benötigen
wir jeweils eine File-Mount-Gruppe für die Abteilungen. Wir
legen also zunächst Ordner im Dateisystem und die zugehörigen
Dateifreigaben an und ordnen die Dateifreigaben den entsprechenden
FM-Gruppen zu. Außerdem legen wir eine Gruppe „FM: Presse“
an, mit der man Zugriff auf verschiedene allgemeine Presseordner
erhält.
Um uns später noch etwas Arbeit
zu ersparen, legen wir auch noch eine Gruppe „FM: alle Ordner“
an, der wir alle Dateifreigaben der Abteilungen zuordnen. Diese
Vorgehensweise hat auch den Vorteil, dass bei späteren
Änderungen in der Dateiberechtigung lediglich die entsprechende
Gruppe editiert werden muss.
Rechtegruppen
In diesen Gruppen legen wir die
eigentlichen Rechte im Backend fest, dazu gehören die
Einstellungen, welche man nach Aktivieren der Checkbox „Include
Access Lists“ zur Verfügung hat. Im Einzelnen sind dies:
- Festlegen
der sichtbaren Module im Backend-Menü – hier werden jeweils
nur die ausgewählt, welche für die vorgesehene Aufgabe der
Rechtegruppe benötigt werden - Festlegen
der Tabellen und Felder, welche der Benutzer später sehen und
editieren darf - Verbieten
nicht benötigter Erweiterungen und Seiteninhalte - Eventuelle
Einschränkungen auf bestimmte Sprachen.
Für unser Beispiel legen wir drei
Rechtegruppen an: die Gruppen „R: Newseditor“, „R: einf.
Redakteur“ und „R: erweit. Redakteur“. Auch hier ist es durchaus möglich,
beim Anlegen neuer Rechtegruppen auf den Vorhandenen aufzubauen.
Beispielsweise könnte eine Gruppe „R: Redakteur+News“ die
beiden Gruppen „R: Newseditor“ und „R: einf. Redakteur“
zusammenfassen.
TSConfig-Gruppen
In diesen Gruppen stellen wir
eventuell benötigte TSConfig-Einstellungen für Nutzer
zusammen. Dies kann man beispielsweise nutzen, um Einstellungen zum
Adminpanel zusammenzufassen. Je nach Umfang und Anforderung des
Projektes kann es sein, dass sich das Anlegen dieser Gruppen gar
nicht lohnt oder es günstiger ist, eventuelle
TSConfig-Einstellungen in die Rechtegruppen zu integrieren.
Seitengruppen
Die Seitengruppen werden durch die
Zeichen „S:“ am Beginn des Namens gekennzeichnet. Sie dienen der
Verwaltung der Zugriffsberechtigungen im Seitenbaum, regeln also das
Zusammenspiel mit den Berechtigungen auf Seitenebene. Diese Gruppen haben also selbst keine
Einstellungen, sondern dienen der Rechtevergabe über das Modul
„Zugriff“ im Seitenbaum. Das heißt, dass eine Seite im
Seitenbaum immer zu einer Seitengruppe gehören sollte. Die
Seitengruppen müssen sich an der Ordnung im Seitenbaum
orientieren und sollten im Normalfall dieselbe Hierarchie aufbauen.
Man kann folgende Regeln definieren:
- Eine
Seitengruppe steht für einen bestimmten Seitenbereich im
Seitenbaum. Die entsprechende Seite sowie ihre
Unterseiten sollten dieser Gruppe angehören. Die entsprechende
Einstellung ist mit dem Modul „Zugriff“ zu tätigen. - Seitengruppen
genauso benennen wie die zugehörige Seite. - Eine
Zeile TSConfig im Header der entsprechenden Seite sorgt dafür,
dass auch neu angelegte Seiten automatisch der richtigen
Seitengruppe zugeordnet werden. - Man
benötigt mindestens so viele Seitengruppen, wie man
Einstiegspunkte für Redakteure in den Seitenbaum haben möchte. - Eine
Seitengruppe sollte die Seitengruppen, die in der
korrespondierenden Seiten-Hierarchie direkt unterhalb sind, als
Untergruppen beinhalten. Damit baut man dieselbe Ordnung wie im
Seitenbaum auf und Benutzer, die einer übergeordneten
Seitengruppe angehören, sind berechtigt auch Seiten der
darunter liegenden Redaktionseinheit zu pflegen.
Für unser Beispiel bedeutet das,
dass wir jeweils eine Seitengruppe für eine Abteilung anlegen
sowie die Seitengruppe „S: alle Abteilungen“, welche die anderen
Seitengruppen als Untergruppen enthält.
Anschließend setzen wir die
entsprechenden Zugriffe auf Seitenebene und ergänzen in den
entsprechenden Seiten den benötigten TSConfig Code. In der Hauptseite „Testprojekt“
nehmen wir allgemeine Einstellungen vor und setzen die Gruppe für
neu angelegte Seiten auf „S: Testprojekt“:
TCEMAIN { #allgemeine Berechtigung für neue Seiten permissions.group=show,edit,delete,new,editcontent # gruppe für neu angelegte Seiten = "S: Testprojekt" : permissions.groupid = 1 }
Listing 1
Für alle anderen Seiten, denen
Seitengruppen zugeordnet sind, setzen wir analog die
Gruppenzuordnung für neu angelegte Seiten:
TCEMAIN.permissions.groupid = 3
Listing 2
Gruppen durch META-Gruppen zusammenfassen
Ein Backend-Nutzer erhält, je
nach seinem Aufgabenbereich, eine Zusammenstellung aus den
verschiedenen Gruppen. Dabei sollte er mindestens einer
Seitengruppe, einer Seiten-Mount-Gruppe und einer Rechtegruppe
zugeordnet werden. (Beachten Sie, dass die zwei Häkchen unter
„Mount from Groups“ gesetzt sind, um alle Mounts aus den Gruppen
zu übernehmen.) Um dies noch zu vereinfachen, definieren
wir so genannte META-Gruppen, die diese Zusammenfassung übernehmen. Immer wenn wir eine Kombination mehr als einmal
benötigen, lohnt es eine solche META-Gruppe anzulegen und den
entsprechenden Nutzer dann nur zu dieser hinzuzufügen. Damit ist
es später wieder einfach, Änderungen für eine
komplette Abteilung vorzunehmen, ohne die eigentlichen Benutzer
ändern zu müssen. Da wir in dem Beispiel jeweils
mehrere Redakteure in einer Abteilung haben, legen wir eine
Gruppe „META: Red. Entw.Abtl.“ an, die alle Berechtigungen für
Redakteure in der Entwicklungsabteilung zusammenfasst. Diese
META-Gruppe enthält dann die Untergruppen „S: Entwicklung“,
„SM: Entwicklung“, „R: einf. Redakteur“ und „FM:
Entwicklungsabt.“.
Fazit
Auch wenn es etwas Disziplin beim
Anlegen der Backend-Nutzergruppen erfordert, hat man ein
übersichtliches, leicht anpassbares und skalierbares
Berechtigungskonzept, welches sich nicht nur bei größeren
Projekten lohnt. Denn sind die Backend-Nutzergruppen einmal angelegt,
kann man sich die Berechtigungen eines neuen Benutzers einfach
zusammenklicken. Und aufgrund der Auslagerung der Konfigurationen auf
verschiedene Gruppen sind spätere Änderungen mit wenigen
Handgriffen erledigt.
Hallo,
> Um das vorzustellende Konzept besser erklären zu können,
> soll der abgebildete Seitenbaum als Beispiel dienen.
Von welchem abgebildeten Seitenbaum ist hier die Rede? Ich seh keinen.
Grüsse
Jan
@Jan: http://www.typo3-media.com/fileadmin/downloads/t3n_backendnutzer.pdf