2016-07-05 42 views
0

我一直在研究访问控制。因此,在我们的liferay portlet中,如何获得用户的所有权限,我已经实现了获取角色的权限用户通过如何获得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给我的权限,但通过IDS,我如何才能找到与权限名称即视图/配置/更新

liferay 6.2

回答

1

权限您可以检查用户是否有权限逐一在portlet。

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

是的 - 你一定想为此目的使用permissionChecker而不在乎你获得权限的方式 - 例如通过常规角色,网站角色,组织角色或团队。知道用户被允许进行操作就足够了。 +1 –

0

我想你可以尝试使用这个类PermissionFinderUtil。这个类包含很多获得Permission的函数。