2

目前,我正在尝试创建一个概述,其中列出了为它们中的每一个激活的所有布局和 Portlet 和角色(权限)。

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

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

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

使用 Liferay 5.2.4

4

2 回答 2

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;
}
于 2012-09-14T14:03:07.310 回答
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 ) );
}
于 2012-09-20T10:36:09.273 回答