我想知道为用户分配的网站角色名称列表。所以我尝试了如下,
List<Role> userRolesList = RoleLocalServiceUtil.getUserRoles(userid);
if (userRolesList != null) {
for (Role role : userRolesList) {
System.out.println("rolesID:"+ role.getTypeLabel());
}
}
我只能看到用户的常规类型角色。不是网站类型。但就我而言,用户是站点管理员。那么如何通过api调用获取用户站点角色名称?
答案 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的名称。
使用第一种方法,您可以获得分配给用户的所有网站角色,使用第二种方法,您可以获得分配给具有特定网站/组的用户的所有网站角色。