Я хочу написать метод, который должен вернуть все корневые узлы, которые определенный пользователь может писать/читать.Как проверить, есть ли у определенного пользователя права {Write, read} на корневом узле
В настоящее время я делаю следующее:
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)
но так как то будет осуждается настоящее время я ищу для другого решения. Я знаю, что сессия имеет тест для AccessRights, но я считаю, что работает только для пользователей.
Возможно, у кого-то есть идея, как это сделать без ручного захвата Ролей и проверки значений int.
Привет, Hellfiend
Работает безупречно, спасибо! – hellfiend