====== Access Control List ====== Auf dieser Seite soll ein Überblick der DSAo-Md spezifischen ACL (Access Control List) gegeben werden. Diese Seite soll keine Erläuterung der Zend-ACL darstellen, diese ist in der [[http://framework.zend.com/manual/en/zend.acl.html|Zend Dokumentation]] dokumentiert. ===== Zusammenfassung ===== ^ Element ^ Bedeutung ^ | /devel/data/xml/modules/meta/acl/resources/* | ACL-Ressourcen | | /sql/acl.sql | ACL-Rollen | | Dsao_Builder_Acl | Initialisiert Zend_Acl-Instanz | | Dsao_Application_Resource_Acl | Lädt / Initialisiert Zend_Acl-Instanz | | Dsao_Filter_Acl | Berechtigungsfilter | | Dsao_Controller_Action_Helper_AccessControl | Prüft Zugangsberechtigung des angemeldeten Benutzers | ===== /devel/data/xml/modules/meta/acl/resources/* ===== In diesen XML-Dateien sind die ACL-Ressourcen der einzelnen Module nach dem in der Datei resources.dtd abgelegten Schema festgelegt. ==== Beispiel ==== Beispiel für einen Controller "xyz", der nur für Benutzer mit der Rolle "member" erreichbar sein soll, die Action "xyz::abcAction()" darf nur von Benutzer mit der Rolle "admin" benutzt werden. Das Modul "mdl", in dem sich der Controller befindet, ist für alle zugänglich. Hier die Datei mdl.xml: mdl 2 mdl_xyz 2 4 mdl_xyz_abc 1 4 ===== /sql/acl.sql ===== In der Tabelle acl_role befinden sich die ACL-Rollen. Es werden ID, Name und Elternrollen (wiederum als ID) gespeichert. Tabellendefinition: -- Rollen -- DROP TABLE IF EXISTS `acl_role`; CREATE TABLE IF NOT EXISTS `acl_role` ( `id` INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ID', `name` VARCHAR( 20 ) NOT NULL COMMENT 'Name', `parents` VARCHAR( 255 ) NULL COMMENT 'Beerbte Rollen (durch Komma getrennt)', INDEX ( `name` ) ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci COMMENT = 'ACL-Tabelle für Rollen'; Beispiel: (1,'admin', NULL), -- Administrator * Der erste Parameter gibt die ID an. Diese muss einmalig sein, es dürfen keine zwei Rollen mit der gleichen ID auftreten * Der zweite Parameter gibt den Namen der Rollen an * Der letzte Parameter gibt an, von welchen Rollen (IDs, durch Komma getrennt) die Berechtigungen geerbt werden (falls keine Berechtigungen geerbt werden, muss hier NULL übergeben werden) Ein Kommentar ist jeweils wünschenswert. ===== Dsao_Builder_Acl ===== Der Builder übernimmt, wie der Name schon sagt, das Bauen eines Zend_Acl-Objekts. Es werden zunächst die Rollen und dann die Ressourcen geladen. Anschließend werden die Berechtigungen gesetzt. ===== Dsao_Application_Resource_Acl ===== Diese Klasse sorgt dafür, dass beim Bootstrapping eine Instanz der Klasse Zend_Acl zur Verfügung gestellt wird. Dazu wird diese von der Klasse Dsao_Cache_Loader angefordert, die wiederum ggf. den o.g. Builder zur Initialisierung des Objekts benutzt. ===== Dsao_Filter_Acl ===== Dieser Filter erwartet eine Rolle sowie ein Objekt der Klasse Zend_Acl und filtert dann übergebene Arrays von Resourcen im Hinblick auf die Berechtigung der dem Konstruktor übergebenen Rolle. Zurückgegeben wird ein Array von Resourcen, auf die der Benutzer gemäß seiner Rolle Zugriff hat. ===== Dsao_Controller_Action_Helper_AccessControl ===== Dieser Action-Helper benutzt eine Instanz der Klasse Zend_Acl und den Filter Dsao_Filter_Acl, um zu entscheiden, ob der Benutzer auf die aufgerufene Seite Zugriff hat.