Permission Regeln

Aus Contao Community Documentation


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
  • key array/string, optional
    definiert die angegebenen Aktionen, die über den GET Pataremter key definiert werden und von der Regel betroffen sind
  • error string, optional
    die Fehlermeldung für die Logdatei
  • params array, optional
    Namen der Get Parameter, mit in der Fehlermeldung ausgegeben werden sollen. Außerdem kann der Platzhalter %user für den Benutzernamen angegeben werden.

Beispiele

// Zugriff aus show erlauben
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=show');
 
// Zugriff aus show und edit sowie auf custom erlauben
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=[show,edit]:key=custom');
 
// 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]');
Ansichten
Meine Werkzeuge

Contao Community Documentation

... aber beim nächsten Mal nehm ich einfach den Catalog... da hab ich weniger Arbeit mit.

MacKP
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge