簡體   English   中英

Liferay API:通過權限獲取角色

[英]Liferay API: Get Roles via Permissions

目前,我正在嘗試創建一個概述,其中列出所有已激活的布局和Portlet以及角色(權限)。

我想我已經很接近解決方案了,但是最后一點丟失了。

我已經獲得了所需的各種信息。 我得到了表格布局->資源->權限。 但是現在我不知道如何通過Liferay API從Permissions(或PermissionsId)獲取實際的角色。

我所擁有的:布局,資源,權限我所需要的:角色

使用Liferay 5.2.4

您可以使用RoleLocalServiceUtil。 您可以通過調用user.getCompanyId來超越Liferay用戶的companyId。 和可以通過這種方式檢索的用戶: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;
}

好吧,我想我終於找到了答案。 我現在正在做的是:

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 ) );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM