我想编写一个方法,它必须返回某个用户能够写入/读取的所有根节点。
目前我正在执行以下操作:
public List<String> getAllowedRootPaths(String username) throws RepositoryException {
SecuritySupport securitySupport = Components.getComponent(SecuritySupport.class);
UserManager userManager = securitySupport.getUserManager();
myUser = userManager.getUser(username);
Session session = MgnlContext.getJCRSession("website");
List<String> results = new ArrayList<String>();
if (getRoles().contains("rootPublisher")) {
//check user access and add to array
}
return results;
}
public Collection<String> getRoles() {
return magnoliaUser.getAllRoles();
}
我的旧方法是使用
HierarchyManager hm = MgnlContext.getHierarchyManager("website");
并测试
hm.isGranted(node.getPath(), Permission.READ)
但由于该方法已被弃用,我目前正在寻找另一种解决方案。我知道 Session 有一个针对 AccessRights 的测试,但我似乎只适用于用户 session 。
也许有人知道如何做到这一点,而无需手动获取角色并检查 int 值。
您好, hell 恶魔
最佳答案
正如 Ducaz035 建议的那样,您可以执行 MgnlContext.getAccessManager("website")
并在 AccessManager 上调用 isGranted()
。
或者,您可以只调用 PermissionUtil.isGranted(node,permission) 并让该方法本身找到正确的访问管理器。
关于java - 如何检查某个用户在根节点上是否具有{写、读}权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725084/