2016-07-05 4 views
0

Я работаю над контролем доступа. Итак, в наших портлетах liferay, как я могу получить все разрешения пользователя, я достиг роли ролей пользователь поКак получить разрешения по имени для каждой роли, которую имеет пользователь liferay

FacesContext facesContext = FacesContext 
      .getCurrentInstance(); 
    PortletRequest request = (PortletRequest) facesContext 
      .getExternalContext().getRequest(); 
    User user = (User) request.getAttribute(WebKeys.USER); 
    List<Role> roles = new ArrayList<Role>(); 

      roles.addAll(RoleLocalServiceUtil.getUserRoles(user.getUserId())); 
      roles.addAll(RoleLocalServiceUtil.getUserRelatedRoles(user.getUserId(), user.getGroupIds())); 

Но я не могу найти любую вещь, которую я могу найти, если данный пользователь имеет вид/конфигурации/и т.д. разрешения относительно портлетов. getResourceResourcePermissions дает мне разрешение, но по идентификаторам Как я могу найти разрешение с разрешения имени/просмотр т.е. конфигурации/обновлением

liferay 6.2

ответ

1

Вы можете проверить, если пользователь имеет такое разрешения по одному в портлет.

ThemeDisplay themeDisplay= (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); 
PortletDisplay portletDisplay = themeDisplay.getPortletDisplay(); 
PermissionChecker permissionChecker = themeDisplay.getPermissionChecker(); 

long groupId = themeDisplay.getScopeGroupId(); 
String name = (String)request.getAttribute(WebKeys.PORTLET_ID); 
String primKey = portletDisplay.getResourcePK(); 
boolean view = permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.VIEW); 
boolean congiguration = permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.CONFIGURATION); 
boolean update = permissionChecker.hasPermission(groupId, name, primKey, ActionKeys.UPDATE); 
+0

Спасибо, Это сработало. – Learner

+0

yep - вы определенно хотите использовать permissionChecker для этой цели и не заботитесь о том, каким образом вы получаете разрешения - например. через регулярную роль, роль сайта, роль организации или команды. Достаточно знать, что пользователю разрешена операция. +1 –

0

Я думаю, вы можете попробовать использовать этот класс PermissionFinderUtil. Этот класс содержит множество функций для получения разрешения.

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

  • Нет связанных вопросов^_^