diff --git a/config/alfresco/application-context.xml b/config/alfresco/application-context.xml index 6192cf7e72..9ecf87d8de 100644 --- a/config/alfresco/application-context.xml +++ b/config/alfresco/application-context.xml @@ -18,7 +18,7 @@ - + diff --git a/config/alfresco/usage-services-context.xml b/config/alfresco/usage-services-context.xml index dad5f80d28..3c1b2828e6 100644 --- a/config/alfresco/usage-services-context.xml +++ b/config/alfresco/usage-services-context.xml @@ -3,8 +3,19 @@ - - + + + + + + + + multiTNodeServiceInterceptor + + + + + diff --git a/source/java/org/alfresco/repo/tenant/MultiTAdminServiceImpl.java b/source/java/org/alfresco/repo/tenant/MultiTAdminServiceImpl.java index de0e20d5b0..6e31eef93c 100755 --- a/source/java/org/alfresco/repo/tenant/MultiTAdminServiceImpl.java +++ b/source/java/org/alfresco/repo/tenant/MultiTAdminServiceImpl.java @@ -1139,7 +1139,7 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo } } - // tenant deployer services delegated to tenant service + // tenant deployer/user services delegated to tenant service public boolean isEnabled() { @@ -1151,6 +1151,11 @@ public class MultiTAdminServiceImpl implements TenantAdminService, ApplicationCo return tenantService.getCurrentUserDomain(); } + public String getUserDomain(String username) + { + return tenantService.getUserDomain(username); + } + public String getDomainUser(String baseUsername, String tenantDomain) { return tenantService.getDomainUser(baseUsername, tenantDomain); diff --git a/source/java/org/alfresco/repo/tenant/SingleTAdminServiceImpl.java b/source/java/org/alfresco/repo/tenant/SingleTAdminServiceImpl.java index d0d10ada03..b297d5b938 100644 --- a/source/java/org/alfresco/repo/tenant/SingleTAdminServiceImpl.java +++ b/source/java/org/alfresco/repo/tenant/SingleTAdminServiceImpl.java @@ -109,6 +109,14 @@ public class SingleTAdminServiceImpl implements TenantAdminService return TenantService.DEFAULT_DOMAIN; } + /** + * @return Returns {@link TenantService#DEFAULT_DOMAIN} always + */ + public String getUserDomain(String username) + { + return TenantService.DEFAULT_DOMAIN; + } + /** * @return Returns the given baseUserName always */ diff --git a/source/java/org/alfresco/repo/tenant/TenantUserService.java b/source/java/org/alfresco/repo/tenant/TenantUserService.java index b6dd4268a8..621497affc 100644 --- a/source/java/org/alfresco/repo/tenant/TenantUserService.java +++ b/source/java/org/alfresco/repo/tenant/TenantUserService.java @@ -3,7 +3,7 @@ package org.alfresco.repo.tenant; /** * Interface for Tenant User-Domain functionality. * - * @author Jan Vonka + * @author janv * @author Derek Hulley * @since 3.0 */ @@ -11,9 +11,11 @@ public interface TenantUserService { public String getCurrentUserDomain(); + public String getDomain(String name); + + public String getUserDomain(String username); + public String getDomainUser(String baseUsername, String tenantDomain); - public String getDomain(String name); - public boolean isEnabled(); } diff --git a/source/java/org/alfresco/repo/usage/UserUsageTrackingComponent.java b/source/java/org/alfresco/repo/usage/UserUsageTrackingComponent.java index c0be13010b..34e3b4108b 100644 --- a/source/java/org/alfresco/repo/usage/UserUsageTrackingComponent.java +++ b/source/java/org/alfresco/repo/usage/UserUsageTrackingComponent.java @@ -254,9 +254,16 @@ public class UserUsageTrackingComponent // execute in READ-ONLY txn final Set userNames = txnHelper.doInTransaction(getAllPeople, true); - for (String userName : userNames) + for (final String userName : userNames) { - recalculateUsage(userName); + AuthenticationUtil.runAs(new RunAsWork() + { + public Object doWork() throws Exception + { + recalculateUsage(userName); + return null; + } + }, tenantAdminService.getDomainUser(AuthenticationUtil.getSystemUserName(), tenantAdminService.getUserDomain(userName))); } if (logger.isDebugEnabled())