Class AuthorityServiceImpl
- java.lang.Object
-
- org.alfresco.repo.security.authority.AuthorityServiceImpl
-
- All Implemented Interfaces:
AuthorityService,org.springframework.beans.factory.InitializingBean
public class AuthorityServiceImpl extends java.lang.Object implements AuthorityService, org.springframework.beans.factory.InitializingBean
The default implementation of the authority service.- Author:
- Andy Hind
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classAuthorityServiceImpl.UserAuthoritySetLazy load set of authorities.-
Nested classes/interfaces inherited from interface org.alfresco.service.cmr.security.AuthorityService
AuthorityService.AuthorityFilter
-
-
Field Summary
-
Fields inherited from interface org.alfresco.service.cmr.security.AuthorityService
ZONE_APP_DEFAULT, ZONE_APP_SHARE, ZONE_AUTH_ALFRESCO, ZONE_AUTH_EXT_PREFIX
-
-
Constructor Summary
Constructors Constructor Description AuthorityServiceImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAuthority(java.lang.String parentName, java.lang.String childName)Set an authority to include another authority.voidaddAuthority(java.util.Collection<java.lang.String> parentNames, java.lang.String childName)Set a given child authority to be included by the given parent authorities.voidaddAuthorityToZones(java.lang.String authorityName, java.util.Set<java.lang.String> zones)Add a zone to an authority.voidafterPropertiesSet()booleanauthorityExists(java.lang.String name)Check if an authority exists.longcountGroups()Count the number of users (not groups)longcountUsers()Count the number of groupsjava.lang.StringcreateAuthority(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String shortName)Create an authority.java.lang.StringcreateAuthority(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String shortName, java.lang.String authorityDisplayName, java.util.Set<java.lang.String> authorityZones)Create an authority with a display name and zone.voiddeleteAuthority(java.lang.String name)Delete an authority and all its relationships.voiddeleteAuthority(java.lang.String name, boolean cascade)Delete an authority and all its relationships, optionally recursively deleting child authorities of the same type.java.util.Set<java.lang.String>findAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String parentAuthority, boolean immediate, java.lang.String displayNamePattern, java.lang.String zoneName)Search for authorities by pattern matching (* and ?) against the authority name.java.util.Set<java.lang.String>getAllAuthorities(org.alfresco.service.cmr.security.AuthorityType type)Get all authorities by type See also "getAuthorities" (paged) alternativejava.util.Set<java.lang.String>getAllAuthoritiesInZone(java.lang.String zoneName, org.alfresco.service.cmr.security.AuthorityType type)Gets the names of all authorities in a zone, optionally filtered by type See also "getAuthorities" paged alternative (note: in that case, zone must exist)java.util.Set<java.lang.String>getAllRootAuthorities(org.alfresco.service.cmr.security.AuthorityType type)Get all root authorities by type.java.util.Set<java.lang.String>getAllRootAuthoritiesInZone(java.lang.String zoneName, org.alfresco.service.cmr.security.AuthorityType type)Gets the names of all root authorities in a zone, optionally filtered by type.java.util.Set<java.lang.String>getAuthorities()Get the authorities for the current userorg.alfresco.query.PagingResults<java.lang.String>getAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String zoneName, java.lang.String displayNameFilter, boolean sortByDisplayName, boolean sortAscending, org.alfresco.query.PagingRequest pagingRequest)Get authorities by type and/or zonejava.util.Set<java.lang.String>getAuthoritiesForUser(java.lang.String currentUserName)Get the authorities for the given userorg.alfresco.query.PagingResults<AuthorityInfo>getAuthoritiesInfo(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String zoneName, java.lang.String displayNameFilter, java.lang.String sortBy, boolean sortAscending, org.alfresco.query.PagingRequest pagingRequest)Get authorities by type and/or zonejava.lang.StringgetAuthorityDisplayName(java.lang.String name)Get the display name for the given authority.org.alfresco.service.cmr.repository.NodeRefgetAuthorityNodeRef(java.lang.String name)Gets the authority node for the specified namejava.util.Set<java.lang.String>getAuthorityZones(java.lang.String name)Gets the name of the zone containing the specified authority.java.util.Set<java.lang.String>getContainedAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String name, boolean immediate)Get all the authorities that are contained by the given authority.java.util.Set<java.lang.String>getContainingAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String name, boolean immediate)Get the authorities that contain the given authority, but usegetAuthoritiesForUser(userName).contains(authority)rather thangetContainingAuthorities(type, userName, false).contains(authority)or useAuthorityService.getContainingAuthoritiesInZone(AuthorityType, String, String, AuthorityFilter, int)as they will be much faster.java.util.Set<java.lang.String>getContainingAuthoritiesInZone(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String authority, java.lang.String zoneName, AuthorityService.AuthorityFilter filter, int size)Get a set of authorities with varying filter criteriajava.util.Set<java.lang.String>getDefaultZones()Get the name of the default zone.java.lang.StringgetName(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String shortName)Create the full identifier for an authority given its short name and type.org.alfresco.service.cmr.repository.NodeRefgetOrCreateZone(java.lang.String zoneName)Gets or creates an authority zone node with the specified namejava.lang.StringgetShortName(java.lang.String name)Extract the short name of an authority from its full identifier.org.alfresco.service.cmr.repository.NodeRefgetZone(java.lang.String zoneName)Gets an authority zone node with the specified namebooleanhasAdminAuthority()Check of the current user has admin authority.booleanhasGuestAuthority()Check of the current user has guest authority.voidinit()booleanisAdminAuthority(java.lang.String authorityName)Does the given authority have admin authority.booleanisGuestAuthority(java.lang.String authorityName)Does the given authority have guest authority.voidremoveAuthority(java.lang.String parentName, java.lang.String childName)Remove an authority as a member of another authority.voidremoveAuthorityFromZones(java.lang.String authorityName, java.util.Set<java.lang.String> zones)Remove a zone from an authorityvoidsetAdminGroups(java.util.Set<java.lang.String> adminGroups)voidsetAuthenticationService(AuthenticationService authenticationService)voidsetAuthorityDAO(AuthorityDAO authorityDAO)voidsetAuthorityDisplayName(java.lang.String authorityName, java.lang.String authorityDisplayName)Set the display name for the given authority.voidsetGuestGroups(java.util.Set<java.lang.String> guestGroups)voidsetPermissionServiceSPI(PermissionServiceSPI permissionServiceSPI)voidsetPersonService(PersonService personService)voidsetPolicyComponent(PolicyComponent policyComponent)voidsetTenantService(org.alfresco.repo.tenant.TenantService tenantService)voidsetUserNameMatcher(UserNameMatcher userNameMatcher)
-
-
-
Method Detail
-
setTenantService
public void setTenantService(org.alfresco.repo.tenant.TenantService tenantService)
-
setPersonService
public void setPersonService(PersonService personService)
-
setAuthorityDAO
public void setAuthorityDAO(AuthorityDAO authorityDAO)
-
setUserNameMatcher
public void setUserNameMatcher(UserNameMatcher userNameMatcher)
-
setAuthenticationService
public void setAuthenticationService(AuthenticationService authenticationService)
-
setPermissionServiceSPI
public void setPermissionServiceSPI(PermissionServiceSPI permissionServiceSPI)
-
setAdminGroups
public void setAdminGroups(java.util.Set<java.lang.String> adminGroups)
-
setGuestGroups
public void setGuestGroups(java.util.Set<java.lang.String> guestGroups)
-
setPolicyComponent
public void setPolicyComponent(PolicyComponent policyComponent)
-
init
public void init()
-
afterPropertiesSet
public void afterPropertiesSet() throws java.lang.Exception- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
java.lang.Exception
-
hasAdminAuthority
public boolean hasAdminAuthority()
Check of the current user has admin authority. There is no contract for who should have this authority, only that it can be tested here. It could be determined by group membership, role, authentication mechanism, ...- Specified by:
hasAdminAuthorityin interfaceAuthorityService- Returns:
- true if the currently authenticated user has the admin authority
-
isAdminAuthority
public boolean isAdminAuthority(java.lang.String authorityName)
Does the given authority have admin authority.- Specified by:
isAdminAuthorityin interfaceAuthorityService- Parameters:
authorityName- The name of the authority.- Returns:
- Whether the authority is an 'administrator'.
-
hasGuestAuthority
public boolean hasGuestAuthority()
Check of the current user has guest authority. There is no contract for who should have this authority, only that it can be tested here. It could be determined by group membership, role, authentication mechanism, ...- Specified by:
hasGuestAuthorityin interfaceAuthorityService- Returns:
- true if the currently authenticated user has the guest authority
-
isGuestAuthority
public boolean isGuestAuthority(java.lang.String authorityName)
Does the given authority have guest authority.- Specified by:
isGuestAuthorityin interfaceAuthorityService- Parameters:
authorityName- The name of the authority.- Returns:
- Whether the authority is a 'guest'.
-
countUsers
public long countUsers()
Description copied from interface:AuthorityServiceCount the number of groups- Specified by:
countUsersin interfaceAuthorityService- Returns:
- Returns the number of groups
-
countGroups
public long countGroups()
Description copied from interface:AuthorityServiceCount the number of users (not groups)- Specified by:
countGroupsin interfaceAuthorityService- Returns:
- Returns the number of usrs
-
getAuthorities
public java.util.Set<java.lang.String> getAuthorities()
Get the authorities for the current user- Specified by:
getAuthoritiesin interfaceAuthorityService- Returns:
- authorities for the current user
-
getAuthoritiesForUser
public java.util.Set<java.lang.String> getAuthoritiesForUser(java.lang.String currentUserName)
Get the authorities for the given user- Specified by:
getAuthoritiesForUserin interfaceAuthorityService
-
getAllAuthorities
public java.util.Set<java.lang.String> getAllAuthorities(org.alfresco.service.cmr.security.AuthorityType type)
Get all authorities by type See also "getAuthorities" (paged) alternative- Specified by:
getAllAuthoritiesin interfaceAuthorityService- Parameters:
type- the type of authorities - cannot be null- Returns:
- all authorities by type
- See Also:
(paged)
-
getAuthoritiesInfo
public org.alfresco.query.PagingResults<AuthorityInfo> getAuthoritiesInfo(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String zoneName, java.lang.String displayNameFilter, java.lang.String sortBy, boolean sortAscending, org.alfresco.query.PagingRequest pagingRequest)
Get authorities by type and/or zone- Specified by:
getAuthoritiesInfoin interfaceAuthorityService- Parameters:
type- the type of authorities (note: mandatory if zoneName is null)zoneName- the zoneName (note: mandatory if type is null)displayNameFilter- optional filter (startsWith / ignoreCase) for authority display name (note: implied trailing "*")sortBy- either "displayName", "shortName", "authorityName" or null if no sorting. note: for users, displayName/shortName is equivalent to the userName, for groups if the display is null then use the short namesortAscending- if true then sort ascending else sort descending (ignore if sortByDisplayName is false)pagingRequest- the requested page (skipCount, maxItems, queryExectionId)
-
getAuthorities
public org.alfresco.query.PagingResults<java.lang.String> getAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String zoneName, java.lang.String displayNameFilter, boolean sortByDisplayName, boolean sortAscending, org.alfresco.query.PagingRequest pagingRequest)Get authorities by type and/or zone- Specified by:
getAuthoritiesin interfaceAuthorityService- Parameters:
type- the type of authorities (note: mandatory if zoneName is null)zoneName- the zoneName (note: mandatory if type is null)displayNameFilter- optional filter (startsWith / ignoreCase) for authority display name (note: implied trailing "*")sortByDisplayName- if true then sort (ignoring case) by the authority display name, if false then unsorted note: for users, displayName/shortName is equivalent to the userName, for groups if the display is null then use the short namesortAscending- if true then sort ascending else sort descending (ignore if sortByDisplayName is false)pagingRequest- the requested page (skipCount, maxItems, queryExectionId)
-
addAuthority
public void addAuthority(java.lang.String parentName, java.lang.String childName)Set an authority to include another authority. For example, adding a group to a group or adding a user to a group.- Specified by:
addAuthorityin interfaceAuthorityService- Parameters:
parentName- - the full name string identifier for the parent.childName- - the string identifier for the child.
-
addAuthority
public void addAuthority(java.util.Collection<java.lang.String> parentNames, java.lang.String childName)Set a given child authority to be included by the given parent authorities. For example, adding a group to groups or adding a user to groups.- Specified by:
addAuthorityin interfaceAuthorityService- Parameters:
parentNames- - the full name string identifier for the parents.childName- - the string identifier for the child.
-
createAuthority
public java.lang.String createAuthority(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String shortName)Create an authority.- Specified by:
createAuthorityin interfaceAuthorityService- Parameters:
type- - the type of the authorityshortName- - the short name of the authority to create this will also be set as the default display name for the authority- Returns:
- the name of the authority (this will be the prefix, if any associated with the type appended with the short name)
-
deleteAuthority
public void deleteAuthority(java.lang.String name)
Delete an authority and all its relationships. Note child authorities are not deleted.- Specified by:
deleteAuthorityin interfaceAuthorityService- Parameters:
name- String
-
deleteAuthority
public void deleteAuthority(java.lang.String name, boolean cascade)Delete an authority and all its relationships, optionally recursively deleting child authorities of the same type.- Specified by:
deleteAuthorityin interfaceAuthorityService- Parameters:
name- the authority long namecascade- should the delete be cascaded to child authorities of the same type?
-
getAllRootAuthorities
public java.util.Set<java.lang.String> getAllRootAuthorities(org.alfresco.service.cmr.security.AuthorityType type)
Get all root authorities by type. Root authorities are ones that were created without an authority as the parent authority;- Specified by:
getAllRootAuthoritiesin interfaceAuthorityService- Parameters:
type- - the type of the authority- Returns:
- all root authorities by type.
-
getContainedAuthorities
public java.util.Set<java.lang.String> getContainedAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String name, boolean immediate)Get all the authorities that are contained by the given authority. For a group you could get all the authorities it contains, just the users it contains or just the other groups it includes.- Specified by:
getContainedAuthoritiesin interfaceAuthorityService- Parameters:
type- - if not null, limit to the type of authority specifiedname- - the name of the containing authorityimmediate- - if true, limit the depth to just immediate child, if false find authorities at any depth
-
getContainingAuthorities
public java.util.Set<java.lang.String> getContainingAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String name, boolean immediate)Get the authorities that contain the given authority, but usegetAuthoritiesForUser(userName).contains(authority)rather thangetContainingAuthorities(type, userName, false).contains(authority)or useAuthorityService.getContainingAuthoritiesInZone(AuthorityType, String, String, AuthorityFilter, int)as they will be much faster. For example, this method can be used find out all the authorities that contain a group.- Specified by:
getContainingAuthoritiesin interfaceAuthorityService- Parameters:
type- - if not null, limit to the type of authority specifiedname- - the name of the authority for which the containing authorities are required.immediate- - limit to immediate parents or any ancestor.
-
getAuthorityNodeRef
public org.alfresco.service.cmr.repository.NodeRef getAuthorityNodeRef(java.lang.String name)
Gets the authority node for the specified name- Specified by:
getAuthorityNodeRefin interfaceAuthorityService- Parameters:
name- The authority name- Returns:
- the reference to the authority node
-
getContainingAuthoritiesInZone
public java.util.Set<java.lang.String> getContainingAuthoritiesInZone(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String authority, java.lang.String zoneName, AuthorityService.AuthorityFilter filter, int size)Get a set of authorities with varying filter criteria- Specified by:
getContainingAuthoritiesInZonein interfaceAuthorityService- Parameters:
type- authority type or null for all typesauthority- if non-null, only return those authorities who contain this authorityzoneName- if non-null, only include authorities in the named zonefilter- optional callback to apply further filter criteria or nullsize- if greater than zero, the maximum results to return. The search strategy used is varied depending on this number.- Returns:
- a set of authorities
-
removeAuthority
public void removeAuthority(java.lang.String parentName, java.lang.String childName)Description copied from interface:AuthorityServiceRemove an authority as a member of another authority. The child authority will still exist. If the child authority was not created as a root authority and you remove its creation link, it will be moved to a root authority. If you want rid of it, use delete.- Specified by:
removeAuthorityin interfaceAuthorityService- Parameters:
parentName- - the string identifier for the parent.childName- - the string identifier for the child.
-
authorityExists
public boolean authorityExists(java.lang.String name)
Check if an authority exists.- Specified by:
authorityExistsin interfaceAuthorityService- Parameters:
name- (the long name).- Returns:
- true, the authority exists.
-
createAuthority
public java.lang.String createAuthority(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String shortName, java.lang.String authorityDisplayName, java.util.Set<java.lang.String> authorityZones)Create an authority with a display name and zone.- Specified by:
createAuthorityin interfaceAuthorityService- Parameters:
type- the type of the authorityshortName- the short name of the authority to createauthorityDisplayName- the display name for the authorityauthorityZones- identifier for external user registry owning the authority ornullif not applicable- Returns:
- the full name of the authority (this will be the prefix, if any associated with the type appended with the short name)
-
getAuthorityDisplayName
public java.lang.String getAuthorityDisplayName(java.lang.String name)
Get the display name for the given authority.- Specified by:
getAuthorityDisplayNamein interfaceAuthorityService- Parameters:
name- - the full authority string including any prefix (e.g. GROUP_woof)- Returns:
- - the display name
-
setAuthorityDisplayName
public void setAuthorityDisplayName(java.lang.String authorityName, java.lang.String authorityDisplayName)Set the display name for the given authority. Setting the display name is only supported for authorities of type group- Specified by:
setAuthorityDisplayNamein interfaceAuthorityService- Parameters:
authorityName- StringauthorityDisplayName- String
-
getAuthorityZones
public java.util.Set<java.lang.String> getAuthorityZones(java.lang.String name)
Gets the name of the zone containing the specified authority.- Specified by:
getAuthorityZonesin interfaceAuthorityService- Parameters:
name- the authority long name- Returns:
- the the name of the zone containing the specified authority,
AuthorityService.ZONE_APP_DEFAULTif the authority exists but has no zone, ornullif the authority does not exist.
-
getOrCreateZone
public org.alfresco.service.cmr.repository.NodeRef getOrCreateZone(java.lang.String zoneName)
Gets or creates an authority zone node with the specified name- Specified by:
getOrCreateZonein interfaceAuthorityService- Parameters:
zoneName- the zone name- Returns:
- reference to the zone node
-
getZone
public org.alfresco.service.cmr.repository.NodeRef getZone(java.lang.String zoneName)
Gets an authority zone node with the specified name- Specified by:
getZonein interfaceAuthorityService- Parameters:
zoneName- the zone name- Returns:
- reference to the zone node or null
-
getAllAuthoritiesInZone
public java.util.Set<java.lang.String> getAllAuthoritiesInZone(java.lang.String zoneName, org.alfresco.service.cmr.security.AuthorityType type)Gets the names of all authorities in a zone, optionally filtered by type See also "getAuthorities" paged alternative (note: in that case, zone must exist)- Specified by:
getAllAuthoritiesInZonein interfaceAuthorityService- Parameters:
zoneName- the zone name - note: if zone does not exist then will currently return empty settype- the authority type to filter by ornullfor all authority types- Returns:
- the names of all authorities in a zone, optionally filtered by type
- See Also:
(paged)
-
addAuthorityToZones
public void addAuthorityToZones(java.lang.String authorityName, java.util.Set<java.lang.String> zones)Add a zone to an authority.- Specified by:
addAuthorityToZonesin interfaceAuthorityService- Parameters:
authorityName- String
-
removeAuthorityFromZones
public void removeAuthorityFromZones(java.lang.String authorityName, java.util.Set<java.lang.String> zones)Remove a zone from an authority- Specified by:
removeAuthorityFromZonesin interfaceAuthorityService- Parameters:
authorityName- String
-
getDefaultZones
public java.util.Set<java.lang.String> getDefaultZones()
Get the name of the default zone.- Specified by:
getDefaultZonesin interfaceAuthorityService- Returns:
- the default zone
-
getAllRootAuthoritiesInZone
public java.util.Set<java.lang.String> getAllRootAuthoritiesInZone(java.lang.String zoneName, org.alfresco.service.cmr.security.AuthorityType type)Gets the names of all root authorities in a zone, optionally filtered by type.- Specified by:
getAllRootAuthoritiesInZonein interfaceAuthorityService- Parameters:
zoneName- the zone nametype- the authority type to filter by ornullfor all authority types- Returns:
- the names of all root authorities in a zone, optionally filtered by type
-
findAuthorities
public java.util.Set<java.lang.String> findAuthorities(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String parentAuthority, boolean immediate, java.lang.String displayNamePattern, java.lang.String zoneName)Search for authorities by pattern matching (* and ?) against the authority name. Note: This will use a search index to find the results (eg. via Lucene / SOLR).- Specified by:
findAuthoritiesin interfaceAuthorityService- Parameters:
type- AuthorityTypeparentAuthority- if non-null, will look only for authorities who are a child of the named parentimmediate- iftruethen only search root groups if parentAuthority is null, or immediate children of parentAuthority if it is non-null.displayNamePattern- StringzoneName- - may be null to indicate all zones
-
getName
public java.lang.String getName(org.alfresco.service.cmr.security.AuthorityType type, java.lang.String shortName)Create the full identifier for an authority given its short name and type.- Specified by:
getNamein interfaceAuthorityService- Parameters:
type- AuthorityTypeshortName- String- Returns:
- String
-
getShortName
public java.lang.String getShortName(java.lang.String name)
Extract the short name of an authority from its full identifier.- Specified by:
getShortNamein interfaceAuthorityService- Parameters:
name- String- Returns:
- String
-
-