Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Rollen-Operatoren

Die 7 Operatoren von eZTemplateRoleOperator (has_role, has_role_id, has_any_role, has_role_by_user, has_role_by_user_id, has_policy, has_policy_by_user) - was sie prüfen, warum die gepipte Eingabe ignoriert wird, warum…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/template-operators/role-operators.md

On this page

This page is a translation. Read the English original

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.name}{delimiter}, {/delimiter}{/foreach}

Ausgabe:

current user: id 10, roles: 1 Anonymous

Inhalt

  1. Zwei Regeln, bevor Sie sie verwenden
  2. has_role, has_role_id und has_any_role
  3. has_role_by_user und has_role_by_user_id
  4. has_policy und has_policy_by_user
  5. 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' ) = true

Verwenden 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).

ParameterTypErforderlichStandard
role_nameZeichenketteja''
user_idGanzzahlnein0 (der aktuelle Benutzer)

Generierte Referenz: has_role.

has_role_id

Dasselbe über die ID der Rolle.

ParameterTypErforderlichStandard
role_idGanzzahlja0
user_idGanzzahlnein0 (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.

ParameterTypErforderlichStandard
rolesArray aus Namen und IDsjaarray()
user_idGanzzahlnein0 (der aktuelle Benutzer)
match_allboolescher Wertneinfalse

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() ) = false

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

ParameterTypErforderlichStandard
usereZUser-Objektjanull
role_idGanzzahlja0

Generierte Referenz: has_role_by_user.

has_role_by_user_id

Dasselbe mit der Inhaltsobjekt-ID des Benutzers.

ParameterTypErforderlichStandard
user_idGanzzahlja0
role_idGanzzahlja0

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 ) = true

has_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).

ParameterTypErforderlichStandard
moduleZeichenkette, etwa contentja''
functionZeichenkette, etwa readja''
user_idGanzzahlnein0 (der aktuelle Benutzer)

Generierte Referenz: has_policy.

has_policy_by_user

Dasselbe für ein übergebenes eZUser-Objekt; alles andere ergibt false.

ParameterTypErforderlichStandard
usereZUser-Objektjanull
moduleZeichenketteja''
functionZeichenketteja''

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' ) = true

Alle Beispiele lieferten auf einer Entwicklungsinstallation interpretiert und kompiliert dieselbe Ausgabe.

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x