12.6 Für Profis: Eigene Usergruppen und Berechtigungen
 
Die Namen und Anzahl der Gruppen sowie die Verteilung der Rechte auf diese sind gegenwärtig hart im Programm kodiert. Das heißt, dass sie ohne Eingriff in die Programmdateien nicht verändert werden können.
Hinweis: Die Entwicklungs-Roadmap von Joomla! verspricht, dass sich dies in zukünftigen Versionen (zwischen 1.2 und 1.3) ändern wird. Es soll möglich sein, Gruppen und Inhalte jeweils nach einzelnen Aktionen differenziert zu bestimmen.
|
12.6.1 Änderung der Rechte einer Gruppe
 
Die Programmdatei, in der die Rechte festgelegt werden, finden Sie im Joomla!-Verzeichnis includes. Sie heißt gacl.class.php.
Hinweis: Für die Manipulation von Programmdateien gilt generell: Erstellen Sie eine Sicherheitskopie, bevor Sie die Dateien ändern. Fehlerhafter Code kann dazu führen, dass das ganze System nicht mehr läuft.
|
Öffnen Sie diese Datei mit einem Editor. Dort finden Sie ab Zeile 97 viele Einträge, die mit
$this->_mos_add_acl
beginnen. Sie stellen das Kernstück der Rechteverwaltung dar. Der Befehl _mos_add_acl bestimmt, welche Usergruppe welche Komponente mit welcher Aufgabe aufrufen kann. Dabei entsteht eine Positiv-Liste. Alle Aktionen, die hier nicht definiert sind, sind auch nicht erlaubt. Sehen wir uns das einmal genauer an. Die einzelnen Rechte werden über die Parameter definiert, die nach dem Befehl in Klammern angegeben sind.
Die ersten beiden Parameter bestimmen das so genannte Access Control Object, das ist in Joomla! eine Aktion, die durchgeführt werden soll. Der dritte und vierte Parameter definieren das Access Request Object, das heißt, wer die Aktion durchführen möchte. Die beiden letzten Parameter stellen das Access eXtension Object dar, dass gegebenenfalls bestimmt, auf was sich die Aktion bezieht.
Die vierte Variable gibt die Usergruppe an. Mögliche Werte sind author, editor, publisher, manager, administrator und super administrator. Diese korrespondieren mit den Gruppen, die Sie im Backend auswählen können.
Die einfachste Variante, einer Gruppe ein neues Recht geben, ist, eine Zeile zu suchen, in der dieses Recht einer anderen Gruppe zugesprochen wird, diese zu kopieren und den Gruppeneintrag zu ändern. Um einer Gruppe ein bestimmtes Recht zu nehmen, löschen Sie die Zeile, in der dieses Recht festgelegt wird, oder besser, setzen Sie ein Kommentarzeichen (»#«) an den Anfang der Zeile.
Beachten Sie, dass die Rechte nicht in der Hierarchie vererbt werden. Wenn Sie dem Publisher etwas zugestehen, dann bedeutet das nicht automatisch, dass auch der Administrator darauf zugreifen kann. Das muss explizit angegeben werden.
|
Die Liste ist in mehrere Bereiche aufgeteilt, die illustrieren, welche Rechte zu vergeben sind.
Backend-Login
Nur diejenigen Gruppen, die hier aufgelistet sind, dürfen sich überhaupt im Backend anmelden. Wenn Sie beispielsweise auch »Publishers« den Zugang ermöglichen wollen, so fügen Sie hier die folgende Zeile ein:
$this->_mos_add_acl( 'administration', 'login', 'users',ð
'publisher', null, null );
Variabel ist in diesem Zusammenhang nur der Parameter, der die Gruppe angibt.
Komponenten, Mambots, Module
Welche Aktionen im Backend für die jeweilige Benutzergruppe verfügbar sind, wird nach folgendem Schema geregelt:
$this->_mos_add_acl( 'administration', '<AKTION>', 'users',ð
'<GRUPPE>', '<ART>', '<NAME>' );
Der Parameter <GRUPPE> ist bereits bekannt. Unter <ART> wird durch die Begriffe component, mambot und module festgelegt, um welche Art der Erweiterung es sich handelt. In <NAME> wird dann eine konkrete Erweiterung spezifiziert. Hier kann auch das Wort all stehen, das eine allgemeine Freigabe bewirkt. Im Parameter <AKTION> finden Sie die Werte install, manage und edit, die sich auf die Installation von Erweiterungen, die Ansicht im Manager bzw. die Bearbeitung der Erweiterung beziehen.
Hinweis: Die Vergabe der Werte scheint nicht ganz konsistent zu sein, so dass es immer empfehlenswert ist, sich an bereits vorhandenen Zeilen zu orientieren, um ein bestimmtes Recht zu vergeben.
|
Wollen Sie beispielsweise auch den »Managern« das Recht einräumen, User anzulegen und zu verwalten, so können Sie folgende Zeile verwenden:
$this->_mos_add_acl( 'administration', 'manage', 'users',ð
'manager', 'components', 'com_users' );
Rechte im Frontend
Alle Zeilen, die als ersten Parameter action haben, beziehen sich auf Rechte im Frontend. Sie entsprechen dem folgenden Schema:
$this->_mos_add_acl( 'action', '<AKTION>', 'users', '<GRUPPE>',ð
'content', '<BEREICH>' );
Zulässige Aktionen sind das Erstellen (add), Bearbeiten (edit) und Freigeben (publish). Für <BEREICH> haben Sie zwei Möglichkeiten. Mit all darf ein Mitglied der Gruppe alle Inhaltselemente bearbeiten, mit own nur diejenigen, die es selbst erstellt hat. So kann es sinnvoll sein, dass Autoren auch die Beiträge anderer bearbeiten können. Mit dieser Zeile ist das kein Problem mehr:
$this->_mos_add_acl( 'action', 'edit', 'users', 'editor',ð
'content', 'all' );
Interessant wird die Einstellung der Rechte natürlich dann, wenn Sie eigene Usergruppen erstellen.
12.6.2 Neue Usergruppen
 
Usergruppen werden in der Datenbank in der Tabelle jos_core_acl_aro_groups verwaltet. Dort müssen Sie gegebenenfalls auch die neue Gruppe einfügen. Dazu verwenden Sie am besten phpMyAdmin. Wählen Sie die Datenbank joomla aus und dort die oben genannte Tabelle. Um beispielsweise die Gruppe »Mitglieder« unterhalb von »Registered« zu erzeugen, fügen Sie per SQL die folgenden Befehle ein. Achten Sie darauf, dass alle Befehle auf einmal ausgeführt werden.
SELECT @ins_id := group_id, @ins_lft := lft, @ins_rgt := rgt
FROM jos_core_acl_aro_groups
WHERE name = 'Registered';
SELECT @new_id := MAX(group_id) + 1
FROM jos_core_acl_aro_groups;
UPDATE jos_core_acl_aro_groups SET rgt=rgt+2
WHERE rgt>=@ins_rgt;
UPDATE jos_core_acl_aro_groups SET lft=lft+2
WHERE lft>@ins_rgt;
INSERT INTO jos_core_acl_aro_groups
(group_id,parent_id,name,lft,rgt)
VALUES
(@new_id,@ins_id,'Galileo',@ins_rgt,@ins_rgt+1);
Diese Zeilen fügen einen neuen Benutzer ein und stellen sicher, dass die diversen Ordnungsnummern, die für die interne Verwaltung nötig sind, in richtiger Art und Weise neu angeordnet werden. Wenn Sie nun beispielsweise einen neuen Nutzer anlegen, so sehen Sie, dass unsere Gruppe im Auswahlfeld mit eingetragen wurde.
Nun müssen Sie nur noch die Rechte für die neue Gruppe einrichten, so wie das im vorherigen Kapitel beschrieben wurde. Als Gruppenname können Sie in unserem Fall mitglieder verwenden.
|