Dca-rules: Unterschied zwischen den Versionen

Aus Contao Community Documentation

Zeile 15: Zeile 15:
 
=Regel generic=
 
=Regel generic=
  
Diese Regel dient als Basis aller weiteren Permission-Regeln. Ihr Hauptaufgabe ist den Zugriff der Aktionen zu beschränken. 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.
+
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==
 
==Mögliche Parameter==
Zeile 25: Zeile 25:
  
 
<source lang="php">
 
<source lang="php">
// Zugriff aus Alle löschen verbieten
+
// Zugriff aus show erlauben
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=deleteAll');
+
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=show');
  
// Zugriff aus Löschen sowie Alle Löschen verbieten
+
// Zugriff aus Löschen sowie show und edit erlauben
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=[delete,deleteAll]');
+
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=[show,edit]');
  
 
// benutzerdefinierte Fehlermeldung
 
// benutzerdefinierte Fehlermeldung
$GLOBALS['TL_LANG']['tl_feedback']['errors'][4] = 'Hacking attempt on tl_feedback trying to run action %s'
+
$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=delete:error=&.errors.4:params=['delete']');
+
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('generic:act=[show]:error=&.errors.4:params=['show']');
 
</source>
 
</source>
  
Zeile 42: Zeile 42:
 
=Regel hasAccess=
 
=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''.
+
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==
 
==Mögliche Parameter==
Zeile 72: Zeile 72:
 
// Zugriff auf Dateioperation
 
// Zugriff auf Dateioperation
 
$GLOBALS['TL_DCA']['tl_feedback']['config']['permission_rules'] = array('hasAccess:fop=5');
 
$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');
 +
</source>
 +
 +
=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<br />prüft ob die Aktion auf die aktuelle Seite auszuführen ist
 +
* '''ptable''' ''bool/string'', optional<br />wahr, wenn die Elterntabelle als Grundlage genommen werden soll. alternativ einen Tabellenname
 +
* '''pid''' ''string'', optional<br />Die Spalte der aktuellen Zeile, die zum Laden der ptable als ID genommen soll, standard ist pid
 +
* '''value''' ''int'', optional<br />Alternativ einen Wert zur Überprüfung auf id=value, nur im Zusammenhang mit ptable
 +
 +
==Beispiele==
 +
 +
<source lang="php">
 +
// 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');
 +
</source>
 +
 +
=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:
 +
 +
<source lang="php">
 +
// 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]');
 
</source>
 
</source>

Version vom 19. Dezember 2012, 14:32 Uhr


Erweiterungs-Übersicht
Name des Entwicklers David Molineus http://www.netzmacht.de
Version der Erweiterung 1.0.0-rc2
Kompatibilität mit Contao Version 2.11.0 - 3.0.1
Link zum Extension Repository https://contao.org/de/extension-list/view/dca-rules.html
Link zum Tracker https://github.com/dmolineus/dca-rules/


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']');

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 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

Programmierer brauchen viel Bit, auch wenn es Beck's ist.

Christian Schiffler
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge