Block permissions inheritance programatically
is it possible to block permission inheritance via API?
When we try by resetting the ACP it seems not to work, and still permissions are inherited.
EDIT: my use case is the following:
i want to create a document (folder) inside a tree of other folders, but want only the creator and users from the admin group to have access on it
I also have the same question but in the contexte of the content automation with the rest api…
My need is to block inheritance on a specific folder
Thank you for your help
Don't know about the API, but you could create a listener for various document creation events (DOCUMENT_CREATED, DOCUMENT_CREATED_BY_COPY, DOCUMENT_DUPLICATED, etc.) and then remove inheritance and set default ACL.
DocumentRef docRef = docModel.getRef(); ACP acp = this.session.getACP(docRef); // delete existing 'local' ACL acp.removeACL(ACL.LOCAL_ACL); // block inheritance acp.getOrCreateACL().add(new ACE(SecurityConstants.EVERYONE, SecurityConstants.EVERYTHING, false)); // and then create the local ACL entries you do want ACL acl = acp.getOrCreateACL(ACL.LOCAL_ACL); ... and then create desired ACEs ... acl.add(new ACE("testgroup","Read", true)); acp.addACL(acl); this.session.setACP(docRef, acp, true);
We found out it works if we set the local ACL before doing acp.getOrCreateACL().add(new ACE(SecurityConstants.EVERYONE, SecurityConstants.EVERYTHING, false));
We are thinking it may have something to do with the fact that the above line may remove also the right te set the new ACP.
How you are getting docModel Object if you want to write a stand alone java program and do the same ?
Thanks in Advance.