如何在liferay中获取用户站点角色

时间:2015-04-16 14:21:02

标签: liferay hook liferay-6 liferay-theme

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

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

我只能看到用户的常规类型角色。不是网站类型。但就我而言,用户是站点管理员。那么如何通过api调用获取用户站点角色名称?

2 个答案:

答案 0 :(得分:3)

RoleLocalServiceUtil只会返回常规角色。要获得群组/网站角色,您需要使用getUserGroupRoles(long userId, long groupId) 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());
    }
}

答案 1 :(得分:2)

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

 UserGroupRoleLocalServiceUtil.getUserGroupRoles(
        long userId)

UserGroupRoleLocalServiceUtil.getUserGroupRoles(
        long userId, long groupId)

它返回UserGroupRole对象,您可以从该对象获取Role对象,从而获得Role的名称。

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