【问题标题】:Set Site Permissions for a Role Programmatically Liferay 6.2以编程方式为角色设置站点权限 Liferay 6.2
【发布时间】:2014-06-02 04:43:37
【问题描述】:

我正在为 Liferay 创建一个启动挂钩脚本,以便在幕后为 Liferay 6.2 添加和预配置角色。 具体来说,我希望添加可以通过“控制面板”>“角色”>“操作”>“定义权限”访问的权限类型。

目前我能够添加 Liferay 角色,但迄今为止未能找到以编程方式将自定义权限添加到角色的正确方法。我看到在以前的 Liferay 版本中有一种方法可以做到这一点,但在这里看不到。

https://www.liferay.com/community/forums/-/message_boards/message/2965424 https://www.liferay.com/web/guest/community/forums/-/message_boards/message/124558

到目前为止,我已经调查了 RolePermissionUtil、RoleLocalServiceUtil 以及其他可用的服务。

让我知道这是否可以通过要添加到启动挂钩的服务获得,或者这是否只能在 UI 中完成。

自这些帖子以来,API 似乎发生了变化。

提前感谢您的帮助

【问题讨论】:

  • 使用 ResourcePermissionLocalServiceUtil.setResourcePermissions 和 RoleLocalServiceUtil 解决了这个问题。 RoleLocalServiceUtil.fetchRole(CompanyThreadLocal.getCompanyId(), "角色名称"); ResourcePermissionLocalServiceUtil.setResourcePermissions(CompanyThreadLocal.getCompanyId(), Role.class.getName(), ResourceConstants.SCOPE_GROUP_TEMPLATE, String.valueOf(role.getRoleId()), role.getRoleId(), new String[] {ActionKeys.VIEW, ActionKeys。更新,ActionKeys.DELETE});

标签: liferay-6 roles startupscript resource-id


【解决方案1】:

使用ResourcePermissionLocalServiceUtil.setResourcePermissionsRoleLocalServiceUtil 解决了这个问题。

例如。

RoleLocalServiceUtil.fetchRole(CompanyThreadLocal.getCompanyId(), "Role Name");
ResourcePermissionLocalServiceUtil.setResourcePermissions(CompanyThreadLocal.getCompanyId(), Role.class.getName(), ResourceConstants.SCOPE_GROUP_TEMPLATE, String.valueOf(role.getRoleId()), role.getRoleId(), new String[] {ActionKeys.VIEW, ActionKeys.UPDATE, ActionKeys.DELETE});

我使用CompanyThreadLocal 来获取公司ID,因为我在挂钩而不是portlet 中使用它,通常可以通过主题显示访问它。这里我只是添加对角色的访问,但可以添加其他类名称空间。 (例如"com.liferay.portlet.dynamicdatalists.model.DDLRecordSet"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多