Tips & Tricks - Permission-based display of elements
To display buttons, groupings or grids based on a user's permissions, methods are available in Velocity that can be used in the conditional display. With these methods, information can be shown permission-based even with a VTL Include element. Make sure the expert options have been activated so that all of the dialogs explained in this example are available. Background knowledge in Velocity and application development are an advantage for this workshop.
To begin with, identify the GUIDs of every user group or role that should have permission. In the "User" module, the details which also contain the GUID can be displayed via the main menu View / Details once a user object is selected. The GUID can then be selected and copied to the clipboard. The GUIDs identified in this manner are then defined in the form of an array in the Velocity context.
#set($groupGuids = ['GUID1','GUID2', … 'GUIDn'])
The memberships of the logged-in user are identified in the second step.
#set($userMembership = $Portal.OrgStructure.getMembershipSets($User))
With the method ".intersects()", you can check whether the user is a member of one of the authorized groups or roles. The method returns "true" if one membership is correct and "false" if there are not any matches. This can be checked in an IF condition.
#if($userMembership.intersects($groupGuids) == true)
## Display information or code
#end
The following example checks whether the logged-in user is a member of the Administrators user group and displays the relevant information. With the method ".isEmpty()", you can check whether the user is a member of a group or role in general, or whether they have not been assigned to any group or role.
#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
When you open the editor for the conditional display for the first time, a variable that refers to the current element (button, grouping or grid) has already been defined.
#set($show_simplegroup155043BA = true)
The variable is composed of "$show_" followed by the name attribute of the element. If the value is set to "false", then the element is not generated on the server side. If the value is "true", the element is created and shown. The following example will only display a grouping if the logged-in user is a member of the "Users" user group.
#set($show_simplegroup155043BA = false)
#set($groupGuids = ['6AA80844C3C99EF93BF4536EB18605BF86FDD3C5'])
#set($userMembership = $Portal.OrgStructure.getMembershipSets($User))
#if($userMembership.intersects($groupGuids) == true)
#set($show_simplegroup155043BA = true)
#end
If buttons, groupings or grids should only be shown to anonymous users, this can be checked with the method ".isAnonymous()".
#set($show_simplegroup9238DAD3 = false)
#if($User.isAnonymous())
#set($show_simplegroup9238DAD3 = true)
#end