diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index 7bce6fd5a8..a7d2ad8445 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -492,6 +492,9 @@ + + + diff --git a/config/alfresco/model-specific-services-context.xml b/config/alfresco/model-specific-services-context.xml index c1a5e98e6c..ed4d309303 100644 --- a/config/alfresco/model-specific-services-context.xml +++ b/config/alfresco/model-specific-services-context.xml @@ -9,6 +9,7 @@ + diff --git a/source/java/org/alfresco/repo/lock/LockServiceImpl.java b/source/java/org/alfresco/repo/lock/LockServiceImpl.java index e8bf76828f..1b7b302e56 100644 --- a/source/java/org/alfresco/repo/lock/LockServiceImpl.java +++ b/source/java/org/alfresco/repo/lock/LockServiceImpl.java @@ -41,6 +41,7 @@ import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.policy.PolicyScope; import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.repo.tenant.TenantService; import org.alfresco.repo.version.VersionServicePolicies; import org.alfresco.service.cmr.lock.LockService; import org.alfresco.service.cmr.lock.LockStatus; @@ -77,6 +78,11 @@ public class LockServiceImpl implements LockService, * The node service */ private NodeService nodeService; + + /** + * The tenant service + */ + private TenantService tenantService; /** * The policy component @@ -114,6 +120,17 @@ public class LockServiceImpl implements LockService, { this.nodeService = nodeService; } + + /** + * Set the tenant service + * + * @param tenantService + * the tenant service + */ + public void setTenantService(TenantService tenantService) + { + this.tenantService = tenantService; + } /** * Sets the policy component @@ -208,6 +225,8 @@ public class LockServiceImpl implements LockService, */ public synchronized void lock(NodeRef nodeRef, LockType lockType, int timeToExpire) { + nodeRef = tenantService.getName(nodeRef); + // Check for lock aspect checkForLockApsect(nodeRef); @@ -303,6 +322,8 @@ public class LockServiceImpl implements LockService, */ public synchronized void unlock(NodeRef nodeRef) throws UnableToReleaseLockException { + nodeRef = tenantService.getName(nodeRef); + // Check for lock aspect checkForLockApsect(nodeRef); @@ -357,6 +378,8 @@ public class LockServiceImpl implements LockService, */ public LockStatus getLockStatus(NodeRef nodeRef) { + nodeRef = tenantService.getName(nodeRef); + return getLockStatus(nodeRef, getUserName()); } @@ -445,6 +468,8 @@ public class LockServiceImpl implements LockService, public void checkForLock(NodeRef nodeRef) throws NodeLockedException { String userName = getUserName(); + + nodeRef = tenantService.getName(nodeRef); // Ensure we have found a node reference if (nodeRef != null && userName != null) diff --git a/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java b/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java index b65f35c7c3..8c34de9986 100644 --- a/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java +++ b/source/java/org/alfresco/repo/model/filefolder/FileFolderServiceImpl.java @@ -35,6 +35,7 @@ import java.util.Map; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.repo.search.QueryParameterDefImpl; +import org.alfresco.repo.tenant.TenantService; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.model.FileExistsException; @@ -118,6 +119,7 @@ public class FileFolderServiceImpl implements FileFolderService private NamespaceService namespaceService; private DictionaryService dictionaryService; private NodeService nodeService; + private TenantService tenantService; private CopyService copyService; private SearchService searchService; private ContentService contentService; @@ -148,7 +150,12 @@ public class FileFolderServiceImpl implements FileFolderService { this.nodeService = nodeService; } - + + public void setTenantService(TenantService tenantService) + { + this.tenantService = tenantService; + } + public void setCopyService(CopyService copyService) { this.copyService = copyService; @@ -469,6 +476,8 @@ public class FileFolderServiceImpl implements FileFolderService private List luceneSearch(NodeRef contextNodeRef, boolean folders, boolean files) { + contextNodeRef = tenantService.getName(contextNodeRef); + SearchParameters params = new SearchParameters(); params.setLanguage(SearchService.LANGUAGE_LUCENE); params.addStore(contextNodeRef.getStoreRef()); diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index 05f2d3a15a..0dca3e99dc 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -1335,7 +1335,12 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl } else { - assocRef = assoc.getChildAssocRef(); + assocRef = new ChildAssociationRef(assoc.getChildAssocRef().getTypeQName(), + tenantService.getBaseName(assoc.getChildAssocRef().getParentRef()), + assoc.getChildAssocRef().getQName(), + tenantService.getBaseName(assoc.getChildAssocRef().getChildRef()), + assoc.getChildAssocRef().isPrimary(), + assoc.getChildAssocRef().getNthSibling()); } return assocRef; } diff --git a/source/java/org/alfresco/repo/security/authority/AuthorityServiceImpl.java b/source/java/org/alfresco/repo/security/authority/AuthorityServiceImpl.java index 310963b600..002e77983e 100644 --- a/source/java/org/alfresco/repo/security/authority/AuthorityServiceImpl.java +++ b/source/java/org/alfresco/repo/security/authority/AuthorityServiceImpl.java @@ -104,7 +104,9 @@ public class AuthorityServiceImpl implements AuthorityService public boolean hasAdminAuthority() { String currentUserName = authenticationComponent.getCurrentUserName(); - return ((currentUserName != null) && adminUsers.contains(currentUserName)); + + // for MT, see note for getAuthoritiesForUser + return ((currentUserName != null) && (adminUsers.contains(currentUserName) || adminUsers.contains(tenantService.getBaseNameUser(currentUserName)))); } /* (non-Javadoc) @@ -117,7 +119,8 @@ public class AuthorityServiceImpl implements AuthorityService { canonicalName = authorityName; } - return adminUsers.contains(canonicalName); + // for MT, see note for getAuthoritiesForUser + return (adminUsers.contains(canonicalName) || adminUsers.contains(tenantService.getBaseNameUser(canonicalName))); } // IOC