Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式为每个用户组创建角色_Java_Liferay - Fatal编程技术网

Java 以编程方式为每个用户组创建角色

Java 以编程方式为每个用户组创建角色,java,liferay,Java,Liferay,我希望为门户中的每个用户组创建一个角色,以便根据用户所属的组一次向多个用户授予特定访问权限 使用Liferay API,是否可以通过编程方式为门户中存在的每个用户组添加角色 这将比通过UI单独添加每个角色更有效 差不多 for(i = 0; i < userGroups.size(); i++){ roles.add(userGroups[i].getName()); } 有人完成过类似的任务吗 链接Liferay论坛帖子简而言之,您需要创建一个与您拥有的用户组名称相似的角色,然

我希望为门户中的每个用户组创建一个角色,以便根据用户所属的组一次向多个用户授予特定访问权限

使用Liferay API,是否可以通过编程方式为门户中存在的每个用户组添加角色

这将比通过UI单独添加每个角色更有效

差不多

for(i = 0; i < userGroups.size(); i++){
    roles.add(userGroups[i].getName());
}
有人完成过类似的任务吗


链接Liferay论坛帖子

简而言之,您需要创建一个与您拥有的用户组名称相似的角色,然后将该用户组分配给该角色

您可以通过Liferay的API以编程方式实现这一点,因为Liferay也可以通过编程方式创建不同类型的角色,并为角色分配用户、用户组等

要做到这一点,您只需要深入了解源代码。检查源代码中的、和

我提供了Liferay v6.2的步骤,在6.0和6.1中应该没有太多变化:

使用获取所有用户组 如您所做的那样循环:

for (UserGroup userGroup : userGroups) {
   ... // steps to follow
}
获取用户组的名称:UserGroup.getName

使用创建角色并将用户组分配给使用角色

现在,您是否要编写此代码段?根据您的要求,有不同的地方:

自定义插件portlet,带有执行此代码的UI。如果定期需要,更好 自定义插件操作钩子和代码进入StartUpAction,在部署钩子时执行代码。应该取消部署钩子,否则每次部署钩子时都会运行钩子。最好一次性使用 自定义插件升级挂钩,根据升级条件在部署期间执行一次代码。最好一次性使用 使用Beanshell,服务器管理→ 剧本→ 选择Beanshell→ 粘贴代码段→ 处决您需要有适当的导入语句,然后只需要代码片段,就可以开始了。有关Beanshell用法的示例,您可以查看。最好一次性使用 即使在这一切发生之后,你仍然必须努力给予每个角色许可-


希望这会有所帮助。

简而言之,您需要创建一个与您拥有的用户组名称相似的角色,然后将该用户组分配给该角色

您可以通过Liferay的API以编程方式实现这一点,因为Liferay也可以通过编程方式创建不同类型的角色,并为角色分配用户、用户组等

要做到这一点,您只需要深入了解源代码。检查源代码中的、和

我提供了Liferay v6.2的步骤,在6.0和6.1中应该没有太多变化:

使用获取所有用户组 如您所做的那样循环:

for (UserGroup userGroup : userGroups) {
   ... // steps to follow
}
获取用户组的名称:UserGroup.getName

使用创建角色并将用户组分配给使用角色

现在,您是否要编写此代码段?根据您的要求,有不同的地方:

自定义插件portlet,带有执行此代码的UI。如果定期需要,更好 自定义插件操作钩子和代码进入StartUpAction,在部署钩子时执行代码。应该取消部署钩子,否则每次部署钩子时都会运行钩子。最好一次性使用 自定义插件升级挂钩,根据升级条件在部署期间执行一次代码。最好一次性使用 使用Beanshell,服务器管理→ 剧本→ 选择Beanshell→ 粘贴代码段→ 处决您需要有适当的导入语句,然后只需要代码片段,就可以开始了。有关Beanshell用法的示例,您可以查看。最好一次性使用 即使在这一切发生之后,你仍然必须努力给予每个角色许可-


希望这有帮助。

您只能在Liferay中创建以下类型或角色:1常规角色:权限在门户级别定义并应用于门户级别;2站点角色:权限在门户级别定义并应用于一个特定站点,3组织角色:权限在门户级别定义并应用于一个特定组织;4团队:权限在特定站点内定义并在该特定站点内分配。它不支持用户组级别的角色。请描述您的需求,以便我可以建议实现它的替代方法。您确实可以为用户组分配角色。它将是您提到的4个角色之一,但属于组的用户仍然可以继承一个公共角色。我将某些页面的查看权限限制为某些用户组,将角色分配给用户组将授予此功能,如果需要,还将授予更多功能您只能在Liferay中创建以下类型或角色:1常规角色:权限在门户级别定义,并在门户级别应用,2站点角色:权限在门户级别定义并应用于
指定给一个特定站点,3个组织角色:权限在门户级别定义并应用于一个特定组织,4个团队:权限在特定站点内定义并在该特定站点内分配。它不支持用户组级别的角色。请描述您的需求,以便我可以建议实现它的替代方法。您确实可以为用户组分配角色。它将是您提到的4个角色之一,但属于组的用户仍然可以继承一个公共角色。我限制对某些页面的某些用户组的查看权限,将角色分配给用户组会授予此功能,如果需要,还会授予更多功能,只是为了让其他用户知道,请在问题中包含指向Liferay帖子的链接,反之亦然。这有助于社区了解它是否在某个地方得到了回答。将节省社区宝贵的时间。谢谢@PrakashK非常感谢您需要传递groupId而不是userGroupId此评论,以便其他用户知道,请在问题中包含指向您的Liferay帖子的链接,反之亦然。这有助于社区了解它是否在某个地方得到了回答。将节省社区宝贵的时间。谢谢@PrakashK非常感谢您需要传递groupId而不是userGroupId此评论
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
}