Rollen-Operatoren
Diese Operatoren fragen, ob ein Benutzer eine Rolle hat oder eine Richtlinie für ein Modul und eine Funktion, damit ein
Template Teile einer Seite je nach Rolle zeigen oder verbergen kann. Sie werden von eZTemplateRoleOperator
(lib/eztemplate/classes/eztemplateroleoperator.php) über lib/eztemplate/classes/eztemplateautoload.php registriert.
Alle geben einen booleschen Wert zurück und lesen die Rollen mit eZUser::roles(), das auch die Rollen einschließt, die
der Benutzer über Benutzergruppen erhält.
Die Beispiele wurden von einem Kommandozeilenlauf gerendert, der nicht angemeldet ist; der aktuelle Benutzer ist also der anonyme Benutzer (auf einer Entwicklungsinstallation die ID 10) mit der Rolle "Anonymous" (ID 1). Es wurde nichts verändert.
def $me = fetch( 'user', 'current_user' )
current user: id $me.contentobject_id, roles: foreach $me.roles as $r$r.id $r.namedelimiter, /delimiter/foreachAusgabe:
current user: id 10, roles: 1 AnonymousInhalt
- Zwei Regeln, bevor Sie sie verwenden
- has_role, has_role_id und has_any_role
- has_role_by_user und has_role_by_user_id
- has_policy und has_policy_by_user
- Verwandte Seiten
Zwei Regeln, bevor Sie sie verwenden
Die gepipte Eingabe wird ignoriert. modify() liest nur die Parameter. Viele Beispiele schreiben
$current_user|has_role( 'Administrator' ), aber der Wert vor dem | spielt keine Rolle: Der Operator prüft
den Benutzer, der mit user_id angegeben ist, und ohne ihn den aktuellen Benutzer. $someone|has_role( ... )
antwortet also stillschweigend für den Besucher, nicht für $someone:
'any value'|has_role( 'Anonymous' ) = 'any value'|has_role( 'Anonymous' )|choose( 'false', 'true' )Ausgabe:
'any value'|has_role( 'Anonymous' ) = trueVerwenden Sie die Aufrufform und übergeben Sie den Benutzer ausdrücklich, wenn Sie einen anderen Benutzer meinen.
Sie sind keine Zugriffsprüfung. Eine Rolle oder eine Richtlinie sagt nichts über ihre Einschränkungen aus (Bereiche,
Teilbäume, Klassen, Besitzer). has_policy( 'content', 'edit' ) ist auch für einen Benutzer wahr, der nur einen einzigen
Ordner bearbeiten darf. Um zu entscheiden, ob der Benutzer mit einem bestimmten Objekt etwas tun darf, verwenden Sie die
eigenen Prüfungen des Objekts ($node.can_edit, $node.object.can_read) oder die Fetch-Funktion user has_access_to,
und denken Sie daran, dass der Server beim Ausführen der Aktion erneut prüfen muss: Eine verborgene Schaltfläche ist keine
Berechtigung.
has_role, has_role_id und has_any_role
has_role
Ob der Benutzer eine Rolle mit genau diesem Namen hat (verglichen mit ==, Groß- und Kleinschreibung zählt also).
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
role_name | Zeichenkette | ja | '' |
user_id | Ganzzahl | nein | 0 (der aktuelle Benutzer) |
Generierte Referenz: has_role.
has_role_id
Dasselbe über die ID der Rolle.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
role_id | Ganzzahl | ja | 0 |
user_id | Ganzzahl | nein | 0 (der aktuelle Benutzer) |
Generierte Referenz: has_role_id.
has_any_role
Ob der Benutzer mindestens eine der aufgeführten Rollen hat, oder mit match_all alle. Jeder Eintrag ist eine Rollen-ID,
wenn er eine Ganzzahl oder eine Zeichenkette aus Ziffern ist, sonst ein Rollenname.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
roles | Array aus Namen und IDs | ja | array() |
user_id | Ganzzahl | nein | 0 (der aktuelle Benutzer) |
match_all | boolescher Wert | nein | false |
Generierte Referenz: has_any_role.
has_role( 'Anonymous' ) = has_role( 'Anonymous' )|choose( 'false', 'true' )
has_role( 'Administrator' ) = has_role( 'Administrator' )|choose( 'false', 'true' )
has_role_id( 1 ) = has_role_id( 1 )|choose( 'false', 'true' )
has_any_role( array( 'Editor', 1 ) ) = has_any_role( array( 'Editor', 1 ) )|choose( 'false', 'true' )
has_any_role( array( 'Anonymous', 'Editor' ), 0, true() ) = has_any_role( array( 'Anonymous', 'Editor' ), 0, true() )|choose( 'false', 'true' )Ausgabe:
has_role( 'Anonymous' ) = true
has_role( 'Administrator' ) = false
has_role_id( 1 ) = true
has_any_role( array( 'Editor', 1 ) ) = true
has_any_role( array( 'Anonymous', 'Editor' ), 0, true() ) = falsehas_role_by_user und has_role_by_user_id
has_role_by_user
Ob das übergebene Benutzerobjekt (ein eZUser, etwa fetch( 'user', 'current_user' )) die Rolle mit dieser ID hat.
Alles andere (eine Zahl, eine leere Variable) ergibt false.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
user | eZUser-Objekt | ja | null |
role_id | Ganzzahl | ja | 0 |
Generierte Referenz: has_role_by_user.
has_role_by_user_id
Dasselbe mit der Inhaltsobjekt-ID des Benutzers.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
user_id | Ganzzahl | ja | 0 |
role_id | Ganzzahl | ja | 0 |
Generierte Referenz: has_role_by_user_id.
def $me = fetch( 'user', 'current_user' )
has_role_by_user( $me, 1 ) = has_role_by_user( $me, 1 )|choose( 'false', 'true' )
has_role_by_user_id( $me.contentobject_id, 1 ) = has_role_by_user_id( $me.contentobject_id, 1 )|choose( 'false', 'true' )Ausgabe:
has_role_by_user( $me, 1 ) = true
has_role_by_user_id( $me.contentobject_id, 1 ) = truehas_policy und has_policy_by_user
has_policy
Ob irgendeine Rolle des Benutzers eine Richtlinie für das Modul und die Funktion hat. Die Richtlinien werden nach Modul-
und Funktionsname verglichen, wobei * in einer Richtlinie auf jedes Modul oder jede Funktion passt: Die Richtlinie *
der Rolle Administrator beantwortet jede Frage mit true, eine Richtlinie content/* jede Funktion von content.
Einschränkungen werden nicht betrachtet (siehe die Regeln oben).
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
module | Zeichenkette, etwa content | ja | '' |
function | Zeichenkette, etwa read | ja | '' |
user_id | Ganzzahl | nein | 0 (der aktuelle Benutzer) |
Generierte Referenz: has_policy.
has_policy_by_user
Dasselbe für ein übergebenes eZUser-Objekt; alles andere ergibt false.
| Parameter | Typ | Erforderlich | Standard |
|---|---|---|---|
user | eZUser-Objekt | ja | null |
module | Zeichenkette | ja | '' |
function | Zeichenkette | ja | '' |
Generierte Referenz: has_policy_by_user.
def $me = fetch( 'user', 'current_user' )
has_policy( 'content', 'read' ) = has_policy( 'content', 'read' )|choose( 'false', 'true' )
has_policy( 'content', 'edit' ) = has_policy( 'content', 'edit' )|choose( 'false', 'true' )
has_policy_by_user( $me, 'user', 'login' ) = has_policy_by_user( $me, 'user', 'login' )|choose( 'false', 'true' )Ausgabe:
has_policy( 'content', 'read' ) = true
has_policy( 'content', 'edit' ) = false
has_policy_by_user( $me, 'user', 'login' ) = trueAlle Beispiele lieferten auf einer Entwicklungsinstallation interpretiert und kompiliert dieselbe Ausgabe.
Verwandte Seiten
- Rollen- und Richtlinien-Operatoren für Designer
- Richtlinienfunktionen und Einschränkungen
- Zugriffskontrolle im Code
- Alle Template-Operatoren (generiert)
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.