Tipps & Tricks - Rechteabhängige Anzeige von Elementen
Um Schaltflächen, Gruppierungen oder Raster abhängig von der Berechtigung eines Benutzers anzuzeigen, stehen in Velocity Methoden zur Verfügung, die in der Bedingten Anzeige verwendet werden können. Mit diesen Methoden können Informationen auch mit einem VTL-Include-Element rechteabhängig angezeigt werden. Aktivieren Sie die Experten-Optionen, damit alle Dialoge, die in diesem Beispiel genannt werden, erreichbar sind. Velocity- und Anwendungsentwicklungs-Kenntnisse sind für diesen Beitrag von Vorteil.
Ermitteln Sie zunächst die GUIDs aller Benutzergruppen oder Rollen, die berechtigt werden sollen. Im Modul "Benutzer" können die Details, in denen auch die GUID enthalten ist, mit dem Hauptmenü Ansicht / Details eingeblendet werden, sobald ein Benutzerobjekt markiert ist. Die GUID kann dann markiert und in die Zwischenablage kopiert werden. Die so ermittelten GUIDs werden in Form eines Arrays im Velocity-Kontext definiert.
#set($groupGuids = ['GUID1','GUID2', … 'GUIDn'])
Im zweiten Schritt werden alle Mitgliedschaften des angemeldeten Benutzers ermittelt.
#set($userMembership = $Portal.OrgStructure.getMembershipSets($User))
Mit der Methode ".intersects()" kann geprüft werden, ob der Benutzer in einen der berechtigten Gruppen oder Rollen Mitglied ist. Die Methode liefert "true" bei mindestens einer Mitgliedschaft und "false" bei keiner Übereinstimmung zurück. Dies kann in einer IF-Bedingung geprüft werden.
#if($userMembership.intersects($groupGuids) == true)
## Display information or code
#end
Das folgende Beispiel prüft, ob der angemeldete Benutzer Mitglied der Administratoren-Benutzergruppe ist und zeigt diese Information an. Mit der Methode .isEmpty() kann geprüft werden, ob der Benutzer generell Mitgliedschaft an einer Gruppe bzw. Rolle besitzt oder ob dieser keiner Gruppe bzw. Rolle zugeordnet wurde.
#set($groupGuids = ['EF16F15EDA8562E19D7CD56BF2E43001F119193C'])
#set($userMembership = $Portal.OrgStructure.getMembershipSets($User))
#if($userMembership.intersects($groupGuids) == true)
The logged-in user is a member of the "Administrators" group
#else
The logged-in user is not a member of the "Administrators" group
#end
#if($userMembership.isEmpty() == true)
The logged in user is not assigned to any group/role
#end
Wenn Sie den Editor für die Bedingte Anzeige das erste Mal öffnen, ist dort bereits eine Variable mit Bezug auf das aktuelle Element (Schaltfläche, Gruppierung oder Raster) vordefiniert.
#set($show_simplegroup155043BA = true)
Die Variable setzt sich aus "$show_" gefolgt vom name-Attribut des Elements zusammen. Wird der Wert auf "false" gesetzt, wird das Element serverseitig nicht erzeugt. Bei "true" wird das Element erstellt und angezeigt. Das folgende Beispiel zeigt eine Gruppierung nur an, wenn der angemeldete Benutzer Mitglied der Benutzergruppe "Benutzer" ist.
#set($show_simplegroup155043BA = false)
#set($groupGuids = ['6AA80844C3C99EF93BF4536EB18605BF86FDD3C5'])
#set($userMembership = $Portal.OrgStructure.getMembershipSets($User))
#if($userMembership.intersects($groupGuids) == true)
#set($show_simplegroup155043BA = true)
#end
Sollen Schaltflächen, Gruppierungen oder Raster nur für anonyme Benutzer angezeigt werden, kann der aktuell angemeldete Benutzer mit der Methode ".isAnonymous()" geprüft werden.
#set($show_simplegroup9238DAD3 = false)
#if($User.isAnonymous())
#set($show_simplegroup9238DAD3 = true)
#end