根据登录用户获取liferay的角色

原文地址:http://www.liferay.com/zh/web/meera.success/blog/-/blogs/working-with-liferay-user-roles

在liferay中用户可以拥有多种角色,所以在我们开发portlet的时候我们可能需要使用用户角色。

下面这篇文章详细介绍了liferay的角色 

http://www.liferaysavvy.com/2014/03/liferay-building-blocks.html

通常liferay中包含以下角色

常规角色/portal 级角色

组织角色

站点角色

继承角色

Portal角色或常规角色

常规角色/portal 级角色是liferay提供的站点级角色,它与组织、站点、用户群组没什么不同。

这类角色可以赋给组织、社区/站点或者用户群组下的任何一个用户。

通常情况下,当我们把常规角色/portal 级角色赋给任何一个用户的时候,会在users_roles表中存储这个对应关系

我们可以使用RoleLocalServiceUtil类提供的方法获取指定用户的常规角色/portal 级角色。

我们可以使用下面的方法获取用户的常规角色/portal级角色

使用 RoleLocalSercviceUtil

List<Role>userRoles=RoleLocalServiceUtil.getUserRoles(themeDisplay.getUserId());

使用 User Object

List<Role>userRoles1=themeDisplay.getUser().getRoles();

站点角色

站点角色只能赋予站点成员,我们可以将创建的站点角色赋给liferay中的任何一个站点。

当我给一个用户设置站点角色后,会在UserGroupRole表中存储这个关系。当我们想要获取用户的站点角色时可以使用UserGroupRoleLocalService 提供的方法

List<UserGroupRole>userGroupRoles =

 UserGroupRoleLocalServiceUtil. getUserGroupRoles(themeDisplay.getUserId())

List<UserGroupRole>siteRoles = new ArrayList<UserGroupRole>();

for(UserGroupRole userGroupRole : userGroupRoles) {

int roleType = userGroupRole.getRole().getType();

if (roleType == RoleConstants.TYPE_SITE) {

siteRoles.add(userGroupRole);

}

}

组织角色

和站点角色一样,组织角色为组织用户服务。组织角色可以赋予liferay中任何组织的组织成员。

同样,当我们给一个组织的用户赋予组织角色的时候,在UserGroupRole表中存储这个关系。同样,当我们想要获取用户的组织角色的时候,我们可以使用UserGroupRoleLocalService提供的方法

List<UserGroupRole>userGroupRoles =

 UserGroupRoleLocalServiceUtil. getUserGroupRoles(themeDisplay.getUserId())

List<UserGroupRole>organizationRoles = new ArrayList<UserGroupRole>();

for(UserGroupRole userGroupRole : userGroupRoles) {

int roleType = userGroupRole.getRole().getType();

if (roleType == RoleConstants.TYPE_ORGANIZATION) {

organizationRoles.add(userGroupRole);

}

}

继承角色

继承角色不是真实存在的,但是我们可以在用户个人账户管理界面角色管理部分看到这个角色。这个角色只有在用户属于某一用户群组,且该群组拥有群组角色。

简单的说,用户没有直接拥有角色,用户群组拥有某一个角色,用户是这个群组的成员,这是角色变为继承角色赋予给用户。

解释:

1.      创建一个用户群组A,并给其分配成员。

2.      创建角色B

3.      将B赋予给A

当我们想获取用户的继承角色时,我们首先需要获取用户所在的所有用户群组 

 

<%

User selUser=themeDisplay.getUser();

List<Group> allGroups = new ArrayList<Group>();

List<UserGroup> userGroups = selUser.getUserGroups();

List<Group> groups = selUser.getGroups();

List<Organization> organizations = selUser.getOrganizations();

allGroups.addAll(groups);

allGroups.addAll(GroupLocalServiceUtil.getOrganizationsGroups(organizations));

allGroups.addAll(GroupLocalServiceUtil.getOrganizationsRelatedGroups(organizations));

allGroups.addAll(GroupLocalServiceUtil.getUserGroupsGroups(userGroups));

allGroups.addAll(GroupLocalServiceUtil.
getUserGroupsRelatedGroups(userGroups));

for(int i=0;i<allGroups.size();i++){

com.liferay.portal.model.Group group=allGroups.get(i);

List<Role> groupRoles = RoleLocalServiceUtil.getGroupRoles(group.getGroupId());

if (!groupRoles.isEmpty()) {

Role groupRole = groupRoles.get(0);

out.println(ListUtil.toString(groupRoles,
 Role.NAME_ACCESSOR));

}

}

%>

 

引入以下类

 

<%@page import="com.liferay.portal.kernel.util.ListUtil"%>

<%@page import="com.liferay.portal.service.GroupLocalServiceUtil"%>

<%@page import="com.liferay.portal.model.Organization"%>

<%@page import="com.liferay.portal.model.User"%>

<%@page import="com.liferay.portal.model.UserGroup"%>

<%@page import="com.liferay.portal.model.Group"%>

<%@page import="java.util.ArrayList"%>

<%@page import="com.liferay.portal.model.RoleConstants"%>

<%@page import="com.liferay.portal.service.UserGroupRoleLocalServiceUtil"%>

<%@page import="com.liferay.portal.model.UserGroupRole"%>

<%@page import="com.liferay.portal.model.Role"%>

<%@page import="java.util.List"%>

<%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%>

<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%>

<%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>

<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>

<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />

<liferay-theme:defineObjects />

<%

List<Role> userRoles=RoleLocalServiceUtil.getUserRoles(themeDisplay.getUserId());

List<Role> userRoles1=themeDisplay.getUser().getRoles();

for (Role role : userRoles) {

out.println(role.getName());

}

%>

<%

List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(themeDisplay.getUserId());

List<UserGroupRole> organizationRoles = new ArrayList<UserGroupRole>();

for (UserGroupRole userGroupRole : userGroupRoles) {

int roleType = userGroupRole.getRole().getType();

if (roleType == RoleConstants.TYPE_ORGANIZATION) {

organizationRoles.add(userGroupRole);

out.println(userGroupRole.getRole().getName());

}

}

%>

<%

List<UserGroupRole> userGroupRoles1 = UserGroupRoleLocalServiceUtil.getUserGroupRoles(themeDisplay.getUserId());

List<UserGroupRole> siteRoles = new ArrayList<UserGroupRole>();

for (UserGroupRole userGroupRole : userGroupRoles1) {

int roleType = userGroupRole.getRole().getType();

if (roleType == RoleConstants.TYPE_SITE) {

siteRoles.add(userGroupRole);

out.println(userGroupRole.getRole().getName());

}

}

%>

<%

User selUser=themeDisplay.getUser();

List<Group> allGroups = new ArrayList<Group>();

List<UserGroup> userGroups = selUser.getUserGroups();

List<Group> groups = selUser.getGroups();

List<Organization> organizations = selUser.getOrganizations();

allGroups.addAll(groups);

allGroups.addAll(GroupLocalServiceUtil.
getOrganizationsGroups(organizations));

allGroups.addAll(GroupLocalServiceUtil.
getOrganizationsRelatedGroups(organizations));

allGroups.addAll(GroupLocalServiceUtil.
getUserGroupsGroups(userGroups));

allGroups.addAll(GroupLocalServiceUtil.
getUserGroupsRelatedGroups(userGroups));

for(int i=0;i<allGroups.size();i++){

com.liferay.portal.model.Group group=allGroups.get(i);

List<Role> groupRoles = RoleLocalServiceUtil.getGroupRoles(group.getGroupId());

if (!groupRoles.isEmpty()) {

Role groupRole = groupRoles.get(0);

out.println(ListUtil.toString(groupRoles,
 Role.NAME_ACCESSOR));

}

}

%>

posted on 2017-12-13 12:00  liferay6  阅读(633)  评论(0编辑  收藏  举报

导航