我想为门户中的每个用户组创建一个角色,以便我可以一次授予许多用户特定的访问权限,具体取决于他们所属的组。
使用Liferay API,是否可以通过编程方式为门户网站中存在的每个用户组添加角色?
这将比通过UI单独添加每个角色更为有效。
就像是
for(i = 0; i < userGroups.size(); i++){
roles.add(userGroups[i].getName());
}
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想用相同的方法将相同的用户组分配给该角色,否则该角色将不知道相关的用户组:
roles.assignUserGroup(userGroups[i]);
Run Code Online (Sandbox Code Playgroud)
有人完成了类似的任务吗?
链接的Liferay论坛帖子 http://liferay.com/community/forums/-/message_boards/message/46355079
简而言之,您需要创建一个与您拥有的用户组名称相似的角色,然后将用户组分配给该角色。
您可以使用Liferay的API进行编程,因为那是liferay还能创建不同类型的角色并将用户,用户组等分配给角色的方式。
您只需要深入研究源代码即可执行此操作。检查源代码RoleLocalServiceImpl,UserGroupLocalServiceImpl和GroupLocalServiceImpl。
我提供了Liferay v6.2的步骤,在6.0和6.1中应该没有太大变化:
完成后循环遍历:
for (UserGroup userGroup : userGroups) {
... // steps to follow
}
Run Code Online (Sandbox Code Playgroud)获取用户组的名称: userGroup.getName()
创建使用角色RoleLocalServiceUtil.addRole(...) ,并使用此用户组分配给角色GroupLocalServiceUtil.addRoleGroups(...)
for (UserGroup userGroup : userGroups) {
String userGroupName = userGroup.getName();
// for locale specific title (optional, can be null)
Map<Locale, String> titleMap = new HashMap<Locale, String>();
titleMap.put(Locale.ENGLISH, userGroupName);
// for locale specific description (optional, can be null)
Map<Locale, String> descriptionMap = new HashMap<Locale, String>();
titleMap.put(Locale.ENGLISH, "Role created for UserGroup - " + userGroupName);
int type = RoleConstants.TYPE_REGULAR;
// adding the role
Role role = RoleLocalServiceUtil.addRole(userId, Role.class.getName(), 0, userGroupName, titleMap, descriptionMap, type, null, null);
// assigning the UserGroup to the role
GroupLocalServiceUtil.addRoleGroups(role.getRoleId(), new long[]{userGroup.getGroupId()}); // need to pass groupId and not userGroupId
}
Run Code Online (Sandbox Code Playgroud)现在您会写这个代码片段吗?根据您的要求,有很多地方:
即使完成了所有这些,您仍然必须尽一切努力来允许每个角色;-)
希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
2439 次 |
| 最近记录: |