package fr.itldev.koya.behaviour.security; import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.policy.Behaviour; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.apache.log4j.Logger; import fr.itldev.koya.alfservice.KoyaNodeService; import fr.itldev.koya.alfservice.security.SpaceAclService; import fr.itldev.koya.exception.KoyaServiceException; import fr.itldev.koya.model.KoyaModel; import fr.itldev.koya.model.impl.Space; /** * Apply default ACL on objects of type Space or Dossier on node creation. * * Creates Node Specific Groups and set Permissions. * * Add Creator Authority to Responsibles Group if not belongs blacklist nor * importer user * */ public class ApplyDefaultAclOnCreate implements NodeServicePolicies.OnCreateNodePolicy { private final Logger logger = Logger.getLogger(this.getClass()); private Behaviour onCreateNode; private PolicyComponent policyComponent; private SpaceAclService spaceAclService; private KoyaNodeService koyaNodeService; public void setPolicyComponent(PolicyComponent policyComponent) { this.policyComponent = policyComponent; } public void setKoyaNodeService(KoyaNodeService koyaNodeService) { this.koyaNodeService = koyaNodeService; } public void setSpaceAclService(SpaceAclService spaceAclService) { this.spaceAclService = spaceAclService; } public void init() { // Create behaviours this.onCreateNode = new JavaBehaviour(this, "onCreateNode", Behaviour.NotificationFrequency.TRANSACTION_COMMIT); this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateNodePolicy.QNAME, KoyaModel.TYPE_DOSSIER, this.onCreateNode); this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateNodePolicy.QNAME, KoyaModel.TYPE_SPACE, this.onCreateNode); } @Override public void onCreateNode(ChildAssociationRef childAssocRef) { Space space; try { space = koyaNodeService.getKoyaNode(childAssocRef.getChildRef(), Space.class); } catch (KoyaServiceException ex) { logger.error("Error Applying default permissions on node creation : " + ex.toString()); return; } spaceAclService.initSpaceAcl(space); } }