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. ロールRoleU1をフェッチするRoleU2か、ID だけをフェッチします。
  2. ログインしたユーザーを取得します。
  3. ログインしたユーザーのすべてのロールを取得するか、ユーザーのすべての roleIds を取得します。
  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 に答える