原文地址: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. 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, } } %>
|
引入以下类
<%@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. allGroups.addAll(GroupLocalServiceUtil. allGroups.addAll(GroupLocalServiceUtil. allGroups.addAll(GroupLocalServiceUtil. 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, } } %> |