2016-07-05 9 views
0

私はアクセス制御に取り組んでいます。私たちのライフルポートレットでは、どのようにユーザーのすべてのアクセス権を取得できますか?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は私に許可を与えるが、IDによって、どのように私は、ユーザーがその権限ポートレットで一つ一つを持っているかどうかをチェックすることができます許可名すなわちビュー/設定/更新

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

あなたは間違いなくこの目的のためにpermissionCheckerを使いたいと思います。定期的な役割、サイトの役割、組織の役割またはチームを通じて。ユーザーに操作が許可されていることを知っていれば十分です。 +1 –

0

このクラスのPermissionFinderUtilを使用してみてください。このクラスには、Permissionを取得するための多くの関数が含まれています。

関連する問題