Package fr.becpg.repo.security.impl
Class SecurityServiceImpl
java.lang.Object
fr.becpg.repo.security.impl.SecurityServiceImpl
- All Implemented Interfaces:
SecurityService
@Service("securityService")
public class SecurityServiceImpl
extends Object
implements SecurityService
Security Service : is in charge to compute acls by node Type. And provide
permission on properties
- Version:
- $Id: $Id
- Author:
- "Matthieu Laborie"
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Stringprivate AlfrescoRepository<ACLGroupData>private AssociationServiceprivate org.alfresco.service.cmr.security.AuthorityServiceprivate BeCPGCacheServiceprivate EntityDictionaryServiceprivate static final Stringprivate static final org.apache.commons.logging.Logprivate org.alfresco.service.namespace.NamespaceServiceprivate org.alfresco.service.cmr.repository.NodeServiceprivate SecurityServicePlugin[]private static final StringFields inherited from interface fr.becpg.repo.security.SecurityService
NONE_ACCESS, READ_ACCESS, WRITE_ACCESS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidappendPropName(org.alfresco.service.cmr.dictionary.TypeDefinition typeDefinition, Map.Entry<org.alfresco.service.namespace.QName, org.alfresco.service.cmr.dictionary.PropertyDefinition> properties, List<String> ret) private StringbuildCacheKey(org.alfresco.service.cmr.repository.NodeRef nodeRef, List<org.alfresco.service.cmr.repository.NodeRef> groups) private StringbuildPluginAccessModeCacheKey(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType) intcomputeAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, String propName) Compute access mode for the given field name on a specific typeprivate intcomputeAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, List<PermissionModel> permissions) intcomputeAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, org.alfresco.service.namespace.QName propName) Compute access mode for the given field name on a specific typeprivate StringcomputeCacheKey(org.alfresco.service.cmr.repository.NodeRef nodeRef) private StringcomputeNodeTypeKey(org.alfresco.service.namespace.QName nodeType) private StringcomputeNodeTypePropKey(org.alfresco.service.namespace.QName nodeType, String propName) private intcomputePluginAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, int accesMode) private List<org.alfresco.service.cmr.repository.NodeRef>Extract props list based on existing ACL_GROUPSprivate Map<String,List<PermissionModel>> getPermissionCachedMap(String cacheKey) getPermissionContext(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, String propName) Get the permission context for a given node and a given propertygetReadOnlyCachedMap(String cacheKey) List available security roles for userprivate booleanisAdmin()booleanisCurrentUserAllowed(String securityGroup) Check user is in currentSecurityGroup or isAdminprivate booleanisEntityTemplate(org.alfresco.service.cmr.repository.NodeRef nodeRef) private booleanisInGroup(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, List<org.alfresco.service.cmr.repository.NodeRef> groups) Check if current user is in corresponding group or roleprivate booleanisViewableProperty(org.alfresco.service.namespace.QName qName) Test if the property should be showvoidRefresh ACLS cache per tenant
-
Field Details
-
ACLS_CACHE_KEY
- See Also:
-
LOCAL_ACLS_CACHE_KEY
- See Also:
-
USER_ROLE_CACHE_KEY
- See Also:
-
logger
private static final org.apache.commons.logging.Log logger -
alfrescoRepository
-
authorityService
@Autowired private org.alfresco.service.cmr.security.AuthorityService authorityService -
dictionaryService
-
namespaceService
@Autowired private org.alfresco.service.namespace.NamespaceService namespaceService -
beCPGCacheService
-
securityPlugins
-
nodeService
@Autowired private org.alfresco.service.cmr.repository.NodeService nodeService -
associationService
-
-
Constructor Details
-
SecurityServiceImpl
public SecurityServiceImpl()
-
-
Method Details
-
computeAccessMode
public int computeAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, org.alfresco.service.namespace.QName propName) Compute access mode for the given field name on a specific type- Specified by:
computeAccessModein interfaceSecurityService- Parameters:
nodeRef- aNodeRefobjectnodeType- aQNameobject.propName- aQNameobject.- Returns:
- Access Mode status
-
computeAccessMode
public int computeAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, String propName) Compute access mode for the given field name on a specific type- Specified by:
computeAccessModein interfaceSecurityService- Parameters:
nodeRef- aNodeRefobjectnodeType- aQNameobject.propName- aStringobject.- Returns:
- Access Mode status
-
isEntityTemplate
private boolean isEntityTemplate(org.alfresco.service.cmr.repository.NodeRef nodeRef) -
computeAccessMode
private int computeAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, List<PermissionModel> permissions) -
getPermissionContext
public PermissionContext getPermissionContext(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, String propName) Get the permission context for a given node and a given property- Specified by:
getPermissionContextin interfaceSecurityService- Parameters:
nodeRef- aNodeRefobjectnodeType- aQNameobjectpropName- aStringobject- Returns:
- a
Listobject.
-
computeCacheKey
-
getReadOnlyCachedMap
-
computeNodeTypeKey
-
refreshAcls
public void refreshAcls()Refresh ACLS cache per tenant- Specified by:
refreshAclsin interfaceSecurityService
-
getPermissionCachedMap
-
isCurrentUserAllowed
Check user is in currentSecurityGroup or isAdmin- Specified by:
isCurrentUserAllowedin interfaceSecurityService- Parameters:
securityGroup- aStringobject.- Returns:
- a boolean.
-
getUserSecurityRoles
List available security roles for user- Specified by:
getUserSecurityRolesin interfaceSecurityService- Returns:
- a
Listobject.
-
isAdmin
private boolean isAdmin() -
isInGroup
private boolean isInGroup(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, List<org.alfresco.service.cmr.repository.NodeRef> groups) Check if current user is in corresponding group or role -
computePluginAccessMode
private int computePluginAccessMode(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType, int accesMode) -
buildCacheKey
-
buildPluginAccessModeCacheKey
private String buildPluginAccessModeCacheKey(org.alfresco.service.cmr.repository.NodeRef nodeRef, org.alfresco.service.namespace.QName nodeType) -
computeNodeTypePropKey
-
findAllAclGroups
-
getAvailablePropNames
Extract props list based on existing ACL_GROUPS- Specified by:
getAvailablePropNamesin interfaceSecurityService- Returns:
- a
Listobject.
-
appendPropName
-
isViewableProperty
private boolean isViewableProperty(org.alfresco.service.namespace.QName qName) Test if the property should be show- Parameters:
qName- the q name- Returns:
- true, if is viewable property
-