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

How can I get the user site roles in liferay

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

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

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

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

 UserGroupRoleLocalServiceUtil.getUserGroupRoles(
        long userId)

UserGroupRoleLocalServiceUtil.getUserGroupRoles(
        long userId, long groupId)

它 returns UserGroupRole 对象,您可以从中获取 Role 对象以及角色名称。

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

的用户的所有站点角色

RoleLocalServiceUtil 只会 return 你的常规角色。要获得组/站点角色,您需要使用 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());
    }
}