假设有 2 个角色 (RoleU1
和RoleU2
),所以现在如果我理解正确,如果用户有RoleU1
他有一个链接到一个页面,比如说Welcome Role U1 page
,用户RoleU2
将有一个到页面的链接Welcome to Role U2 page
,要做到这一点,你可以这样做下列的:
- 获取角色
RoleU1
和RoleU2
/或仅获取他们的 ID。
- 获取登录用户。
- 获取登录用户的所有角色或获取用户的所有角色标识。
- 检查用户的角色,然后相应地向用户显示链接。
以下是上述步骤的代码:
#* Fetch the RoleLocalService to fetch the roles, this is similar to using RoleLocalServiceUtil in our custom code in portlets *#
#set($roleLocalService = $serviceLocator.findService("com.liferay.portal.service.RoleLocalService"))
#* fetch the RoleU1 *#
#set($role_u1 = $roleLocalService.getRole($company_id, "RoleU1"))
#set($role_u1_id = $role_u1.getRoleId())
#* fetch the RoleU2 *#
#set($role_u2 = $roleLocalService.getRole($company_id, "RoleU2"))
#set($role_u2_id = $role_u2.getRoleId())
#* current logged-in User is already defined in the theme as $user, so fetch roles for this user *#
#set ($user_role_ids = $user.getRoleIds())
#* check by looping through the user roles *#
#set ($has_role_u1 = false)
#set ($has_role_u2 = false)
#foreach($user_role_id in $user_role_ids)
#if($user_role_id == $role_u1_id)
#set ($has_role_u1 = true)
#end
#if($user_role_id == $role_u2_id)
#set ($has_role_u2 = true)
#end
#end
#if($has_role_u1)
<a href="/group/xxx/xxx" >Welcome to Role U1 page</a>
#else if($has_role_u2)
<a href="/group/xxx/yyy" >Welcome to Role U2 page</a>
#end
希望这是您所需要的,或者至少会给出提示。