1

我想在我的主题速度模板中管理用户角色:

#set ($foundUser = $cmsuser.getUserByUserId($session.getAttribute("user_id")))

#if($foundUser)
    #if($cmsuser.isUserRole($foundUser, "user_admin"))

        <a href="/group/xxx/xxx" ></a>

    #else
        <a href="/group/xxx/yyy" ></a>
    #end

但它不起作用!!!!

4

1 回答 1

2

假设有 2 个角色 (RoleU1RoleU2),所以现在如果我理解正确,如果用户有RoleU1他有一个链接到一个页面,比如说Welcome Role U1 page ,用户RoleU2将有一个到页面的链接Welcome to Role U2 page,要做到这一点,你可以这样做下列的:

  1. 获取角色RoleU1RoleU2/或仅获取他们的 ID。
  2. 获取登录用户。
  3. 获取登录用户的所有角色或获取用户的所有角色标识。
  4. 检查用户的角色,然后相应地向用户显示链接。

以下是上述步骤的代码:

#* 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

希望这是您所需要的,或者至少会给出提示。

于 2013-05-09T12:59:56.367 回答