2

現時点では、すべてのレイアウト、ポートレット、およびそれらのすべてに対してアクティブ化されているロール (権限) を一覧表示する概要を作成しようとしています。

私はすでに解決策にかなり近づいていると思いますが、最後のビットが欠けています。

私はすでに必要なあらゆる種類の情報を入手しています。フォームレイアウトを取得しました->リソースへ->許可へ。しかし、Liferay API を介してパーミッション (またはパーミッション ID) から実際のロールにアクセスする方法がわかりません。

私が持っているもの: レイアウト、リソース、許可 必要なもの: ロール

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 に答える