2012-09-13 3 views
2

현재 모든 레이아웃과 포틀릿 및 모든 항목에 대해 활성화 된 역할 (권한)을 나열하는 개요를 만들려고합니다.Liferay API : 권한을 통해 역할 얻기

나는 이미 해결책에 가깝지만 마지막 비트가 빠져 있다고 생각한다.

나는 이미 필요한 모든 종류의 정보를 얻었습니다. 나는 Layout -> Resource to -> Permission으로 폼을 가지고있다. 하지만 이제 Liferay API를 통해 권한 (또는 권한 ID)에서 실제 역할로 이동하는 방법을 알지 못합니다.

내가 무엇을 : 레이아웃, 자원, 권한 내가 필요한 : 역할

당신이 RoleLocalServiceUtil를 사용하는 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

사용. 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; 
} 
관련 문제