2 つのロール (RoleU1
とRoleU2
) があるとします。ユーザーがページに移動するためのリンクを持っているかどうかを正しく理解できた場合RoleU1
、たとえばWelcome Role U1 page
、 を持つユーザーにRoleU2
はページへのリンクがあり、Welcome to Role U2 page
これを行うには、次のことができます。続く:
- ロール
RoleU1
をフェッチするRoleU2
か、ID だけをフェッチします。
- ログインしたユーザーを取得します。
- ログインしたユーザーのすべてのロールを取得するか、ユーザーのすべての roleIds を取得します。
- ユーザーが持っている役割を確認し、それに応じてユーザーにリンクを表示します。
上記の手順のコードは次のとおりです。
#* 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
これがあなたが必要としていたものであることを願っています。さもなければ、少なくともヒントが得られるでしょう。