2016-07-05 71 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的函數。