Block permissions inheritance programatically
Hello,
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.
Thank you
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
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.
Something like…
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);
Thanks again
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.
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