|
Inhaltsverzeichnis
Access Control ListAuf 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 Zend Dokumentation dokumentiert. Zusammenfassung
/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. BeispielBeispiel 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: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE resources SYSTEM "resources.dtd"> <resources> <resource> <id>mdl</id> <allow>2</allow> <!-- 2 = Gast; das Modul ist somit für alle einsehbar --> </resource> <resource> <id>mdl_xyz</id> <deny>2</deny> <allow>4</allow> <!-- der Controller ist für Gäste (2) nicht zugänglich, aber für registrierte Mitglieder (4) schon --> </resource> <resource> <id>mdl_xyz_abc</id> <allow>1</allow> <deny>4</deny> <!-- Die Aktion ist, wie gefordert, nur für Administratoren (1) zugänglich --> </resource> </resources> /sql/acl.sqlIn 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
Ein Kommentar ist jeweils wünschenswert. Dsao_Builder_AclDer 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_AclDiese 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_AclDieser 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_AccessControlDieser 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. |