Fix ALF-2287: getChangeLog should only be available to admins

- lock down AtomPub and Web Service getContentChanges()

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19697 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2010-03-31 14:07:50 +00:00
parent 681676236f
commit 28b9fab6aa
4 changed files with 15 additions and 1 deletions

View File

@@ -65,6 +65,7 @@ import org.alfresco.service.cmr.repository.AssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.search.SearchService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.cmr.version.Version;
import org.alfresco.service.descriptor.DescriptorService;
@@ -132,6 +133,7 @@ public class DMAbstractServicePort
protected SearchService searchService;
protected PropertyUtil propertiesUtil;
protected PermissionService permissionService;
protected AuthorityService authorityService;
public void setCmisService(CMISServices cmisService)
{
@@ -188,6 +190,11 @@ public class DMAbstractServicePort
this.permissionService = permissionService;
}
public void setAuthorityService(AuthorityService authorityService)
{
this.authorityService = authorityService;
}
protected PropertyFilter createPropertyFilter(String filter) throws CmisException
{
try

View File

@@ -40,6 +40,7 @@ import org.alfresco.cmis.CMISResultSetRow;
import org.alfresco.cmis.CMISServiceException;
import org.alfresco.cmis.PropertyFilter;
import org.alfresco.repo.cmis.ws.utils.ExceptionUtil;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.service.cmr.repository.NodeRef;
/**
@@ -172,6 +173,11 @@ public class DMDiscoveryServicePort extends DMAbstractServicePort implements Dis
public void getContentChanges(String repositoryId, Holder<String> changeLogToken, Boolean includeProperties, String filter, Boolean includePolicyIds, Boolean includeACL,
BigInteger maxItems, CmisExtensionType extension, Holder<CmisObjectListType> objects) throws CmisException
{
if (!authorityService.hasAdminAuthority())
{
throw ExceptionUtil.createCmisException("Cannot retrieve content changes", new AccessDeniedException("Requires admin authority"));
}
// TODO: includePolicyIds
checkRepositoryId(repositoryId);
String changeToken = (null != changeLogToken) ? (changeLogToken.value) : (null);