当我以编程方式更改角色时,直到从控制面板运行清理权限才会立即更新角色。
有没有办法通过程序本身调用某些API来做同样的事情?
答案 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());