2013-05-09 4 views
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 

Но это не работает !!!!

+0

Что не работает? Вы получаете какие-либо ошибки? Вы хотите проверить, имеет ли Пользователь эту роль или разрешение и соответственно показывает ссылку? и что такое 'isUserRole'? это поможет, если вы сможете уточнить требование –

+0

Я хочу, чтобы пользователь с одной ролью попал на страницу A и другие на стр. B. – user2273574

ответ

2

Пусть есть 2 Роли (RoleU1 и RoleU2), так что теперь, если я правильно понимаю, если у пользователя есть RoleU1 он есть ссылка для перехода на страницу, скажет Welcome Role U1 page и пользователи с RoleU2 будут иметь ссылку на страницу , Welcome to Role U2 page, чтобы сделать это, что вы можете сделать следующее:

  1. Fetch роли RoleU1 и RoleU2 или принести только их идентификаторы.
  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 

Надежда это то, что вам требуется, или по крайней мере даст подсказку.

+0

Будет ли это работать и для обычных ролей? – ajc

+1

Он должен работать без каких-либо проблем. –

Смежные вопросы