/** * Blocks inheritance and set default rule. * * @param session * @param document * @return acl */ protected ACL blockLocalACLIfNecessary(CoreSession session, DocumentModel document, ACL localAcl) { // Block ACL ACE blockInhACe = ACEsOperationHelper.getBlockInheritanceACe(); if (!localAcl.contains(blockInhACe)) { // Add default rule ACL defaultLocalACL = ACEsOperationHelper.buildDefaultLocalACL(session, document); for(ACE ace : defaultLocalACL){ if(!localAcl.contains(ace)){ localAcl.add(ace); } } // Blocks localAcl.add(blockInhACe); } return localAcl; }
/** * Restore inheritance. * * @param session * @param document * @return acp */ protected ACP restoreInheritanceIfNecessary(CoreSession session, DocumentModel document, ACL localAcl) { // ACP ACP acp = document.getACP(); // Remove default rule ACL defaultLocalACL = ACEsOperationHelper.buildDefaultLocalACL(session, document); if (localAcl.containsAll(defaultLocalACL)) { localAcl.removeAll(defaultLocalACL); } // Remove block to restore inheritance ACE blockInACe = ACEsOperationHelper.getBlockInheritanceACe(); if (localAcl.contains(blockInACe)) { localAcl.remove(blockInACe); } // To clear cache acp.addACL(localAcl); return acp; } //
if (acl.contains(ace)) { acl.remove(ace);
if (!acl.contains(ace)) { acl.add(ace);
/** * Add ACEs on ACL. * * @param acl * @param aces * @return modifed ACL */ @Override protected ACL modifyACEs(ACL acl, List<ACE> aces) { // Add: // If inheritance id blocked, add before block ACE blockInhACe = ACEsOperationHelper.getBlockInheritanceACe(); int blockInhPos = acl.indexOf(blockInhACe); for (ACE aceToAdd : aces) { if (!acl.contains(aceToAdd)) { if (blockInhPos != -1) { acl.add(blockInhPos, aceToAdd); } else { acl.add(aceToAdd); } } } return acl; }
ACL routeACL = acp.getOrCreateACL(DocumentRoutingConstants.ROUTE_TASK_LOCAL_ACL); ACE ace = new ACE(userName, SecurityConstants.READ_WRITE, true); if (!routeACL.contains(ace)) { routeACL.add(ace);
acl.add(publicAce); acp.addACL(acl); } else if (!acl.contains(publicAce)) { acl.add(publicAce);