I have many 'nt:folder' Node
s created and upon each folder creation, permissions has been granted to different set of users.
Now I need to get list of nodes based on user(with read and write) persmissions.
Using jackrabbit 2.6.0
Partial snippet of user creation and privieges assignement:
- User creation
UserManager userManager = ((JackrabbitSession) session).getUserManager();
org.apache.jackrabbit.api.security.user.User user =
(org.apache.jackrabbit.api.security.user.User)userManager.getAuthorizable(userName);
- Add entry
javax.jcr.security.Privilege[] privileges = new
javax.jcr.security.Privilege[] {
accessControlManager.privilegeFromName(javax.jcr.security.Privilege.JCR_WRITE)
};
- Temporary folder access
Map<String, Value> restrictions = new HashMap<String, Value>();
restrictions.put("rep:nodePath",
valueFactory.createValue(userDbInstance.getUserFilePath(),
PropertyType.PATH)); restrictions.put("rep:glob",
valueFactory.createValue("*"));
accessControlList.addEntry(userPrincipal, privileges, true /*allow or deny */, restrictions);
Adding Node
public Node addNode(String parent, String name, ETNodeTypes type) throws JCRServiceException { checkSession(); try { name = Text.escapeIllegalJcrChars(name); logger.debug("Adding Node: " + parent + " type: " + type + " name(escaped):" + name); Node node = session.getNode(parent).addNode(name, type.getName()); node.addMixin("rep:AccessControllable"); logger.debug("Node added: " + node.getPath()); return node; } catch (RepositoryException e) { e.printStackTrace(); throw new JCRServiceException(e,e.getMessage(),"Unable to create"); } }
Thanks.