org.springframework.security.acls.afterinvocation
Class AclEntryAfterInvocationCollectionFilteringProvider

java.lang.Object
  extended by org.springframework.security.acls.afterinvocation.AbstractAclProvider
      extended by org.springframework.security.acls.afterinvocation.AclEntryAfterInvocationCollectionFilteringProvider
All Implemented Interfaces:
AfterInvocationProvider

public class AclEntryAfterInvocationCollectionFilteringProvider
extends AbstractAclProvider

Given a Collection of domain object instances returned from a secure object invocation, remove any Collection elements the principal does not have appropriate permission to access as defined by the AclService.

The AclService is used to retrieve the access control list (ACL) permissions associated with each Collection domain object instance element for the current Authentication object.

This after invocation provider will fire if any ConfigAttribute.getAttribute() matches the AbstractAclProvider.processConfigAttribute. The provider will then lookup the ACLs from the AclService and ensure the principal is Acl.isGranted(Permission[], Sid[], boolean) when presenting the AbstractAclProvider.requirePermission array to that method.

If the principal does not have permission, that element will not be included in the returned Collection.

Often users will setup a BasicAclEntryAfterInvocationProvider with a AbstractAclProvider.processConfigAttribute of AFTER_ACL_COLLECTION_READ and a AbstractAclProvider.requirePermission of BasePermission.READ. These are also the defaults.

If the provided returnObject is null, a nullCollection will be returned. If the provided returnObject is not a Collection, an AuthorizationServiceException will be thrown.

All comparisons and prefixes are case sensitive.

Version:
$Id: AclEntryAfterInvocationCollectionFilteringProvider.java 3927 2009-10-06 19:46:44Z ltaylor $
Author:
Ben Alex, Paulo Neves

Field Summary
protected static org.apache.commons.logging.Log logger
           
 
Fields inherited from class org.springframework.security.acls.afterinvocation.AbstractAclProvider
aclService, objectIdentityRetrievalStrategy, processConfigAttribute, processDomainObjectClass, requirePermission, sidRetrievalStrategy
 
Constructor Summary
AclEntryAfterInvocationCollectionFilteringProvider(AclService aclService, List<Permission> requirePermission)
           
 
Method Summary
 Object decide(Authentication authentication, Object object, Collection<ConfigAttribute> config, Object returnedObject)
           
 
Methods inherited from class org.springframework.security.acls.afterinvocation.AbstractAclProvider
getProcessDomainObjectClass, hasPermission, setObjectIdentityRetrievalStrategy, setProcessConfigAttribute, setProcessDomainObjectClass, setSidRetrievalStrategy, supports, supports
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected static final org.apache.commons.logging.Log logger
Constructor Detail

AclEntryAfterInvocationCollectionFilteringProvider

public AclEntryAfterInvocationCollectionFilteringProvider(AclService aclService,
                                                          List<Permission> requirePermission)
Method Detail

decide

public Object decide(Authentication authentication,
                     Object object,
                     Collection<ConfigAttribute> config,
                     Object returnedObject)
              throws AccessDeniedException
Throws:
AccessDeniedException


Copyright © 2004-2009 SpringSource, Inc. All Rights Reserved.