Permission Regeln
Aus Contao Community Documentation
Inhaltsverzeichnis
Permission Regeln verwenden
Auf dieser Seite werden die Permission Regeln von dca-rules dokumentiert. Bei dca-rules handelt es sich um eine Erweiterung, mit deren hilfe wiederkehrende Bedingungen für DataContainer innerhalb von DCA-Dateien angegeben werden können ohne extra Callbacks zu definieren.
Regel generic
Diese Regel dient als Basis aller weiteren Permission-Regeln. Ihr Hauptaufgabe ist den Zugriff der Aktionen zu beschränken. Dabei sind die angegebenen Aktionen als Whitelist zu verstehen. Sie kann daher auch als eigenständige Regel verwendet werden. Außerdem besteht die Möglichkeit bei einer fehlgeschlagenen Überprüfung eine angepasste Fehlermeldung zu erstellen, die im Systemlog erscheint.
Mögliche Parameter
- act array/string, optional
definiert die angegebenen Aktionen des DataContainers, auf die die Regel angewendet wird - error string, optional
die Fehlermeldung für die Logdatei - params string, optional
Werte die in der Fehlermeldung ersetzt werden sollen
Beispiele
// Zugriff aus show erlauben $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=show'); // Zugriff aus Löschen sowie show und edit erlauben $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=[show,edit]'); // benutzerdefinierte Fehlermeldung $GLOBALS['TL_LANG']['tl_feedback']['errors'][4] = 'Hacking attempt on tl_feedback. Only action "%s" allowed'; $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=[show]:error=&.errors.4:params=['show']');
Regel hasAccess
Diese Regel dient dazu Zugriffsbeschränkungen über die BackendUser::hasAccess zu überprüfen. Sie besitzt neben den hier aufgelisteten Parameter die der Regel generic. Allerdings dient hierbei der Parameter als Begrenzung der Regel. Sie wird also nur dann ausgeführt, wenn die Aktion auch aufgerufen wurde.
Mögliche Parameter
- module array/string, optional
Überprüft den Zugriff auf Module - permission string, optional
Definiert eine beliebige Zugriffsart für BackendUser::hasAccess(action, permission) - action array/string, optional
Definiert eine beliebige Aktion für BackendUser::hasAccess(action, permission) - alexf string, optional
Kurzform um Zugriff auf Feld zu überprüfen BackendUser::hasAccess(alexf, 'alexf') - table string, optional
in Verbindung mit alexf oder action möglich die Tabelle zu bestimmen - fop string, optional
Kurzform zur Überprüfung für BackendUser::hasAccess(fop, 'fop')
Beispiele
// Modulzugriff überprüfen $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:module=tl_article'); $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:module=[tl_article,tl_news]'); // Zugriffsüberprüfung per permission und action $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:permission=newp:action=create'); // Zugriff auf Feld der DCA-Tabelle $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:permission=alefx:action=status'); $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:alexf=status'); // Zugriff auf Feld einer anderen Tabelle $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:permission=alefx:action=status:table=tl_news'); $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:alexf=status:table=tl:news'); // Zugriff auf Dateioperation $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:fop=5'); // Zugriff nur bei Bearbeiten überprüfen $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:act=[edit,editAll]:alexf=status');
Regel isAllowed
Diese Regel dient dazu Zugriffsbeschränkungen über die BackendUser::isAllowed zu überprüfen. Damit kann der Zugriff auf eine Seite überprüft werden. Sie besitzt neben den hier aufgelisteten Parameter die der Regel generic. Allerdings dient hierbei der Parameter als Begrenzung der Regel. Sie wird also nur dann ausgeführt, wenn die Aktion auch aufgerufen wurde.
Diese Erweiterung erlaubt es neben der Überprüfung der aktuellen Datenreihe auch eine beliebige andere Tabelle als Grundlage der Überprüfung zu nehmen. Beispielsweise, wenn man auf der Ebene der tl_content die Rechte überprüfen will.
Mögliche Parameter
- operation int, erforderlich
prüft ob die Aktion auf die aktuelle Seite auszuführen ist - ptable bool/string, optional
wahr, wenn die Elterntabelle als Grundlage genommen werden soll. alternativ einen Tabellenname - pid string, optional
Die Spalte der aktuellen Zeile, die zum Laden der ptable als ID genommen soll, standard ist pid - value int, optional
Alternativ einen Wert zur Überprüfung auf id=value, nur im Zusammenhang mit ptable
Beispiele
// Zugriff auf der Basis der aktuellen Datenzeile $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('isAllowed:operation=5'); // Zugriff auf der Basis der Elterntabelle $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('isAllowed:operation=5:ptable'); // Zugriff auf der Basis einer beliebigen Elterntabelle mit einer beliebigen ID Spalte $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('isAllowed:operation=5:ptable=tl_subcontent:pid=pageid'); // Zugriff auf eine bestimmte Zeile der ID 3 $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('isAllowed:operation=5:ptable:value=3');
Regeln isAdmin und forbidden
Die Regel isAdmin dient dazu Zugriff auf den Administrator zu beschränken. Sie besitzt keine weiteren Parameter als die von der Regel generic. Die Regel forbidden verbietet den Zugriff auf die angebenen Aktionen:
// Bearbeiten nur für Admin, Löschen verbieten $GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('isAdmin:act=[edit,editAll]', 'forbidden:act=[delete,deleteAll]');