如何在Liferay

时间:2016-03-25 20:00:27

标签: java liferay liferay-6

当我以编程方式更改角色时,直到从控制面板运行清理权限才会立即更新角色。

有没有办法通过程序本身调用某些API来做同样的事情?

2 个答案:

答案 0 :(得分:0)

这样做的方法是CleanUpPermissionsUtil.cleanUpAddToPagePermissions(ActionRequest) 但问题是它是一个内部实用程序,无法调用插件。它在PortalContext中执行。

您可以在链接中看到该类的源代码,并尝试在您的逻辑中复制代码 https://github.com/liferay/liferay-portal/blob/6.2.x/portal-impl/src/com/liferay/portlet/admin/util/CleanUpPermissionsUtil.java

答案 1 :(得分:0)

这是您应该用来从更新角色重新加载权限的方式:

Role role = RoleLocalServiceUtil.getRole(companyId, RoleConstants.USER);
List<ResourcePermission> roleResourcePermissions = ResourcePermissionLocalServiceUtil.getRoleResourcePermissions(role.getRoleId());
for(ResourcePermission permission : roleResourcePermissions )
    ResourcePermissionLocalServiceUtil.reassignPermissions(permission.getResourcePermissionId(),role.getRoleId());