我正在为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似乎已发生变化。
提前感谢您的帮助
答案 0 :(得分:0)
使用ResourcePermissionLocalServiceUtil.setResourcePermissions
和RoleLocalServiceUtil
计算出来。
例如
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中使用它,通常可以通过主题显示来访问它。这里我只是添加了对Roles的访问权限,但是可以添加其他类名称空间。 (例如"com.liferay.portlet.dynamicdatalists.model.DDLRecordSet"
)