package org.alfresco.extension; import java.util.Set; import org.alfresco.repo.security.permissions.DynamicAuthority; import org.alfresco.repo.security.permissions.PermissionReference; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.QName; public class SimpleDynamicAuthority implements DynamicAuthority { private static final String AUTHORITY_NAME = "SIMPLE_DYNAMIC_AUTHORITY"; private static final String FORBIDDEN_ITEM_NAME = "Private item"; private static final String FORBIDDEN_FOR_USERNAME = "bart.simpson"; private NodeService nodeService; private boolean doGrantAuthority = true public boolean hasAuthority(NodeRef nodeRef, String username) { String name = (String) nodeService.getProperty(nodeRef, QName.createQName("{http://www.alfresco.org/model/content/1.0}name")); if(name.startsWith(FORBIDDEN_ITEM_NAME) && FORBIDDEN_FOR_USERNAME.equals(username)){ doGrantAuthority = false; } return doGrantAuthority; } public String getAuthority() { return AUTHORITY_NAME; } public Set requiredFor() { return null; // required for all checks } public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } }