2012-09-13 78 views
2

目前我正在尝试创建一个概述,其中列出了为每个人激活的所有布局和Portlet以及角色(权限)。Liferay API:通过权限获取角色

我想我已经很接近解决方案了,但最后一点缺失。

我已经得到了我需要的所有信息。我得到了表单布局 - >到资源 - >到权限。但是现在我不知道如何通过Liferay API从权限(或permissionId)获得实际的角色。

我有什么:布局,资源,权限 我需要什么:角色

使用的Liferay 5.2.4

回答

0

好吧,我想我终于找到了自己。我现在所做的全部是:

List<Layout> tempPages = LayoutLocalServiceUtil.getLayouts(0, LayoutLocalServiceUtil.getLayoutsCount()); 
List<Role> allAvailRoles = RoleLocalServiceUtil.getRoles(0, RoleLocalServiceUtil.getRolesCount()); 
for (Layout page : tempPages) 
{ 
    List<Role> mappedRoles = new ArrayList<Role>(); 
    for (Role role : allAvailRoles) 
    { 
     boolean hasRolePermission = PermissionLocalServiceUtil.hasRolePermission(role.getRoleId(), 
                        page.getCompanyId(), 
                        Layout.class.getName(), 
                        ResourceConstants.SCOPE_INDIVIDUAL, 
                        String.valueOf(page.getPrimaryKey()), 
                        "VIEW"); 
     if (hasRolePermission) 
     { 
      mappedRoles.add(role); 
     } 
    } 
    pages.add(new LayoutRoleModel(page, mappedRoles)); 
} 
0

可以使用RoleLocalServiceUtil。 companyId你可以通过调用user.getCompanyId来获取Liferay用户。和用户可以通过这种方式检索:user = UserLocalServiceUtil.getUserById(id);

private static Role getLiferayRole(String roleName, long companyId) { 
    Role role = null; 
    try { 
     role = RoleLocalServiceUtil.getRole(companyId, roleName); 
    } catch (Exception e) { 
     LOG.error(e.getMessage()); 
    } 
    return role; 
}