【问题标题】:How can I get the user site roles in liferay如何在 liferay 中获取用户站点角色
【发布时间】:2015-06-23 00:39:54
【问题描述】:

我想知道为用户分配的站点角色名称列表。所以我尝试如下,

List<Role> userRolesList = RoleLocalServiceUtil.getUserRoles(userid);
                if (userRolesList != null) {
            for (Role role : userRolesList) {  
                    System.out.println("rolesID:"+ role.getTypeLabel());
                }
            }

我只能看到用户的常规类型角色。不是网站类型。但在我的情况下,用户是站点管理员。那么如何使用 api 调用获取用户站点角色名称?

【问题讨论】:

    标签: liferay hook liferay-6 liferay-theme


    【解决方案1】:

    RoleLocalServiceUtil 只会返回常规角色。要获取组/站点角色,您需要使用getUserGroupRoles(long userId, long groupId) of UserGroupRoleLocalServiceUtil,如下所示:

    List<UserGroupRole> userGroupRoleList =
        UserGroupRoleLocalServiceUtil.getUserGroupRoles(userId, groupId);
        if (userGroupRoleList != null) {
        for (UserGroupRole userGroupRole : userGroupRoleList) {
            /* Get Role object based on userGroupRole.getRoleId() */
            Role role = RoleLocalServiceUtil.getRole(userGroupRole.getRoleId());
            System.out.println("roleId : " + role.getRoleId());
            System.out.println("roleName : " + role.getName());
        }
    }
    

    【讨论】:

    • 好的,谢谢。可以获取角色名称而不是角色ID吗?
    • 我已经更新了我的答案。根据 userGroupRole.getRoleId() 获取“角色”对象
    • 组织角色也可以这样吗?
    【解决方案2】:

    利用下面列出的 com.liferay.portal.service.UserGroupRoleLocalServiceUtil.java 的 api 方法。

     UserGroupRoleLocalServiceUtil.getUserGroupRoles(
            long userId)
    
    UserGroupRoleLocalServiceUtil.getUserGroupRoles(
            long userId, long groupId)
    

    它返回 UserGroupRole 对象,您可以从中获取 Role 对象以及 Role 的名称。

    使用第一种方法可以获得分配给用户的所有站点角色,使用第二种方法可以获得分配给具有特定站点/组的用户的所有站点角色。

    【讨论】:

      猜你喜欢
      • 2014-07-07
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      相关资源
      最近更新 更多