我想写一个方法,它必须返回某个用户能够写/读的所有根节点。
目前我正在做以下事情:
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有一个测试,但我似乎只适用于useression。
也许有人有一个想法如何做到这一点,而无需手动抓取角色并检查int值。
问候, Hellfiend
答案 0 :(得分:2)
正如Ducaz035建议您可以MgnlContext.getAccessManager("website")
并在AccessManager上调用isGranted()
。
或者,您只需调用PermissionUtil.isGranted(node,permission)
并让该方法找到适当的访问管理器本身。
答案 1 :(得分:1)
AccessManager#isGranted(node.getPath(), Permission.READ)
看起来就像你正在寻找的那个。
希望有所帮助,
干杯