in resources/add_tenant_infra_lambda/handler.js [285:359]
async function createTenantConfig(event) {
const {
body: {
tenantSubDomain,
tenantName,
tenantEmailDomain,
tenantTier,
tenantIDPType,
emailId,
},
tenantuuid,
} = event;
if (!tenantName || tenantSubDomain === '') {
return { statusCode: 400, body: 'tenantName, tenantSubDomain are mandatory' };
}
console.log('TenantID from the event', tenantSubDomain);
console.log('TenantEmailDomain from the event', tenantEmailDomain);
console.log('Tenant Name is ', tenantName);
console.log('Tenant SubDomain is ', tenantSubDomain);
console.log('Tenant Tier is ', tenantTier);
console.log('Tenant IDP Type is ', tenantIDPType);
console.log('Admin user email id is ', emailId);
console.log('Tenant UUID is ', tenantuuid);
console.log('Going to get HSI base params from parameter store');
const baseParams = await getBaseParamsFromSsm();
console.log('Done retreiving HSI base params from parameter store');
const hostedZoneId = getParameterValue('hostedzoneid', baseParams);
console.log(`hostedzoneid is ${hostedZoneId}`);
const oidcClientRestApiId = getParameterValue('oidcClientRestApiId', baseParams);
console.log(`oidcClientRestApiId is ${oidcClientRestApiId}`);
const cognitoUserPoolId = getParameterValue('cognitoUserPoolId', baseParams);
console.log(`userPoolId is ${cognitoUserPoolId}`);
console.log('going to create tenantUuid in ssm parameter store');
await putParameterValue('tenantUuid', tenantuuid, tenantSubDomain);
console.log('Done creating tenantUuid in ssm parameter store');
console.log('going to create tenantEmailDomain in ssm parameter store');
await putParameterValue('tenantEmailDomain', tenantEmailDomain, tenantSubDomain);
console.log('Done creating tenantEmailDomain in ssm parameter store');
console.log('Going to create Cognito userpool client');
const userPoolClient = await createCognitoUserPoolClient(baseParams,
tenantSubDomain,
tenantEmailDomain);
console.log(`Done creating Cognito userpool client, ${JSON.stringify(userPoolClient)}`);
console.log('going to create Cognito userpool client id in ssm parameter store');
await putParameterValue('federationCognitoUserPoolAppClientId', userPoolClient.UserPoolClient.ClientId, tenantSubDomain);
console.log('Done creating federationCognitoUserPoolAppClientId in ssm parameter store');
console.log('Going to create Cognito userpool client secret in secrets manager');
await createClientsecretInSecretsManager(tenantSubDomain,
userPoolClient.UserPoolClient.ClientSecret);
console.log('Done creating Cognito userpool client secret in secrets manager');
console.log('Going to create Admin user in Cognito userpool');
await createAdminUser(emailId, getParameterValue('cognitoUserPoolId', baseParams), tenantuuid);
console.log('Done creating Admin user in Cognito userpool');
console.log('Going to create tenant record in tenants table');
await addTenantRecordToTenantsTable({
emaildomain: tenantEmailDomain,
id: tenantuuid,
name: tenantName,
onboarded_date: moment().format('YYYY-MM-DD:hh:mm:ss'),
subdomain: tenantSubDomain,
cognito: { clientid: userPoolClient.UserPoolClient.ClientId },
tier: tenantTier,
}, baseParams);
console.log('Done creating tenant record in tenants table');
return { baseParams };
}