mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-16 17:55:15 +00:00
MT - extra validation when creating/importing new tenants
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8239 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
parent
83ab25f486
commit
1041c6ceb0
@ -281,62 +281,42 @@ public class MultiTAdminServiceImpl extends AbstractLifecycleBean implements Ten
|
|||||||
*/
|
*/
|
||||||
public void createTenant(final String tenantDomain, final char[] tenantAdminRawPassword, String rootContentStoreDir)
|
public void createTenant(final String tenantDomain, final char[] tenantAdminRawPassword, String rootContentStoreDir)
|
||||||
{
|
{
|
||||||
// Check that all the passed values are not null
|
|
||||||
ParameterCheck.mandatory("tenantDomain", tenantDomain);
|
|
||||||
ParameterCheck.mandatory("tenantAdminRawPassword", tenantAdminRawPassword);
|
ParameterCheck.mandatory("tenantAdminRawPassword", tenantAdminRawPassword);
|
||||||
|
|
||||||
validateTenantName(tenantDomain);
|
initTenant(tenantDomain, rootContentStoreDir);
|
||||||
|
|
||||||
if (existsTenant(tenantDomain))
|
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||||
{
|
{
|
||||||
throw new AlfrescoRuntimeException("Tenant already exists: " + tenantDomain);
|
public Object doWork()
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
authenticationComponent.setSystemUserAsCurrentUser();
|
|
||||||
|
|
||||||
if (rootContentStoreDir == null)
|
|
||||||
{
|
|
||||||
rootContentStoreDir = tenantFileContentStore.getDefaultRootDir();
|
|
||||||
}
|
|
||||||
|
|
||||||
// init - need to enable tenant (including tenant service) before stores bootstrap
|
|
||||||
Tenant tenant = new Tenant(tenantDomain, true, rootContentStoreDir);
|
|
||||||
putTenantAttributes(tenantDomain, tenant);
|
|
||||||
|
|
||||||
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
|
||||||
{
|
{
|
||||||
public Object doWork()
|
dictionaryComponent.init();
|
||||||
|
tenantFileContentStore.init();
|
||||||
|
|
||||||
|
// create tenant-specific stores
|
||||||
|
ImporterBootstrap userImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("userBootstrap");
|
||||||
|
bootstrapUserTenantStore(userImporterBootstrap, tenantDomain, tenantAdminRawPassword);
|
||||||
|
|
||||||
|
ImporterBootstrap systemImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("systemBootstrap");
|
||||||
|
bootstrapSystemTenantStore(systemImporterBootstrap, tenantDomain);
|
||||||
|
|
||||||
|
ImporterBootstrap versionImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("versionBootstrap");
|
||||||
|
bootstrapVersionTenantStore(versionImporterBootstrap, tenantDomain);
|
||||||
|
|
||||||
|
ImporterBootstrap spacesArchiveImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("spacesArchiveBootstrap");
|
||||||
|
bootstrapSpacesArchiveTenantStore(spacesArchiveImporterBootstrap, tenantDomain);
|
||||||
|
|
||||||
|
ImporterBootstrap spacesImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("spacesBootstrap");
|
||||||
|
bootstrapSpacesTenantStore(spacesImporterBootstrap, tenantDomain);
|
||||||
|
|
||||||
|
// notify listeners that tenant has been created & hence enabled
|
||||||
|
for (TenantDeployer tenantDeployer : tenantDeployers)
|
||||||
{
|
{
|
||||||
dictionaryComponent.init();
|
tenantDeployer.onEnableTenant();
|
||||||
tenantFileContentStore.init();
|
|
||||||
|
|
||||||
// create tenant-specific stores
|
|
||||||
ImporterBootstrap userImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("userBootstrap");
|
|
||||||
bootstrapUserTenantStore(userImporterBootstrap, tenantDomain, tenantAdminRawPassword);
|
|
||||||
|
|
||||||
ImporterBootstrap systemImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("systemBootstrap");
|
|
||||||
bootstrapSystemTenantStore(systemImporterBootstrap, tenantDomain);
|
|
||||||
|
|
||||||
ImporterBootstrap versionImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("versionBootstrap");
|
|
||||||
bootstrapVersionTenantStore(versionImporterBootstrap, tenantDomain);
|
|
||||||
|
|
||||||
ImporterBootstrap spacesArchiveImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("spacesArchiveBootstrap");
|
|
||||||
bootstrapSpacesArchiveTenantStore(spacesArchiveImporterBootstrap, tenantDomain);
|
|
||||||
|
|
||||||
ImporterBootstrap spacesImporterBootstrap = (ImporterBootstrap)getApplicationContext().getBean("spacesBootstrap");
|
|
||||||
bootstrapSpacesTenantStore(spacesImporterBootstrap, tenantDomain);
|
|
||||||
|
|
||||||
// notify listeners that tenant has been created & hence enabled
|
|
||||||
for (TenantDeployer tenantDeployer : tenantDeployers)
|
|
||||||
{
|
|
||||||
tenantDeployer.onEnableTenant();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}, getSystemUser(tenantDomain));
|
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
|
}, getSystemUser(tenantDomain));
|
||||||
|
|
||||||
logger.info("Tenant created: " + tenantDomain);
|
logger.info("Tenant created: " + tenantDomain);
|
||||||
}
|
}
|
||||||
@ -363,53 +343,32 @@ public class MultiTAdminServiceImpl extends AbstractLifecycleBean implements Ten
|
|||||||
*/
|
*/
|
||||||
public void importTenant(final String tenantDomain, final File directorySource, String rootContentStoreDir)
|
public void importTenant(final String tenantDomain, final File directorySource, String rootContentStoreDir)
|
||||||
{
|
{
|
||||||
// Check that all the passed values are not null
|
initTenant(tenantDomain, rootContentStoreDir);
|
||||||
ParameterCheck.mandatory("tenantDomain", tenantDomain);
|
|
||||||
|
|
||||||
validateTenantName(tenantDomain);
|
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
||||||
|
{
|
||||||
if (existsTenant(tenantDomain))
|
public Object doWork()
|
||||||
{
|
|
||||||
throw new AlfrescoRuntimeException("Tenant already exists: " + tenantDomain);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
authenticationComponent.setSystemUserAsCurrentUser();
|
|
||||||
|
|
||||||
if (rootContentStoreDir == null)
|
|
||||||
{
|
|
||||||
rootContentStoreDir = tenantFileContentStore.getDefaultRootDir();
|
|
||||||
}
|
|
||||||
|
|
||||||
// init - need to enable tenant (including tenant service) before stores bootstrap
|
|
||||||
Tenant tenant = new Tenant(tenantDomain, true, rootContentStoreDir);
|
|
||||||
putTenantAttributes(tenantDomain, tenant);
|
|
||||||
|
|
||||||
AuthenticationUtil.runAs(new RunAsWork<Object>()
|
|
||||||
{
|
{
|
||||||
public Object doWork()
|
dictionaryComponent.init();
|
||||||
|
tenantFileContentStore.init();
|
||||||
|
|
||||||
|
// import tenant-specific stores
|
||||||
|
importBootstrapUserTenantStore(tenantDomain, directorySource);
|
||||||
|
importBootstrapSystemTenantStore(tenantDomain, directorySource);
|
||||||
|
importBootstrapVersionTenantStore(tenantDomain, directorySource);
|
||||||
|
importBootstrapSpacesArchiveTenantStore(tenantDomain, directorySource);
|
||||||
|
importBootstrapSpacesModelsTenantStore(tenantDomain, directorySource);
|
||||||
|
importBootstrapSpacesTenantStore(tenantDomain, directorySource);
|
||||||
|
|
||||||
|
// notify listeners that tenant has been created & hence enabled
|
||||||
|
for (TenantDeployer tenantDeployer : tenantDeployers)
|
||||||
{
|
{
|
||||||
dictionaryComponent.init();
|
tenantDeployer.onEnableTenant();
|
||||||
tenantFileContentStore.init();
|
|
||||||
|
|
||||||
// import tenant-specific stores
|
|
||||||
importBootstrapUserTenantStore(tenantDomain, directorySource);
|
|
||||||
importBootstrapSystemTenantStore(tenantDomain, directorySource);
|
|
||||||
importBootstrapVersionTenantStore(tenantDomain, directorySource);
|
|
||||||
importBootstrapSpacesArchiveTenantStore(tenantDomain, directorySource);
|
|
||||||
importBootstrapSpacesModelsTenantStore(tenantDomain, directorySource);
|
|
||||||
importBootstrapSpacesTenantStore(tenantDomain, directorySource);
|
|
||||||
|
|
||||||
// notify listeners that tenant has been created & hence enabled
|
|
||||||
for (TenantDeployer tenantDeployer : tenantDeployers)
|
|
||||||
{
|
|
||||||
tenantDeployer.onEnableTenant();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}, getSystemUser(tenantDomain));
|
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
|
}, getSystemUser(tenantDomain));
|
||||||
|
|
||||||
logger.info("Tenant imported: " + tenantDomain);
|
logger.info("Tenant imported: " + tenantDomain);
|
||||||
}
|
}
|
||||||
@ -1078,8 +1037,37 @@ public class MultiTAdminServiceImpl extends AbstractLifecycleBean implements Ten
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initTenant(String tenantDomain, String rootContentStoreDir)
|
||||||
|
{
|
||||||
|
validateTenantName(tenantDomain);
|
||||||
|
|
||||||
|
if (existsTenant(tenantDomain))
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Tenant already exists: " + tenantDomain);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rootContentStoreDir == null)
|
||||||
|
{
|
||||||
|
rootContentStoreDir = tenantFileContentStore.getDefaultRootDir();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
File tenantRootDir = new File(rootContentStoreDir);
|
||||||
|
if ((tenantRootDir.exists()) && (tenantRootDir.list().length != 0))
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Tenant root directory is not empty: " + rootContentStoreDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// init - need to enable tenant (including tenant service) before stores bootstrap
|
||||||
|
Tenant tenant = new Tenant(tenantDomain, true, rootContentStoreDir);
|
||||||
|
putTenantAttributes(tenantDomain, tenant);
|
||||||
|
}
|
||||||
|
|
||||||
private void validateTenantName(String tenantDomain)
|
private void validateTenantName(String tenantDomain)
|
||||||
{
|
{
|
||||||
|
ParameterCheck.mandatory("tenantDomain", tenantDomain);
|
||||||
|
|
||||||
if (tenantDomain.length() > MAX_LEN)
|
if (tenantDomain.length() > MAX_LEN)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException(tenantDomain + " is not a valid tenant name (must be less than " + MAX_LEN + " characters)");
|
throw new IllegalArgumentException(tenantDomain + " is not a valid tenant name (must be less than " + MAX_LEN + " characters)");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user