protected TenantDetails createUserPool()

in services/shared-services/tenant-registration-service/src/main/java/com/amazonaws/saas/eks/TenantRegistrationService.java [393:444]


	protected TenantDetails createUserPool(TenantDetails tenant) {

		AWSCognitoIdentityProvider cognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder.defaultClient();
		CreateUserPoolRequest createUserPoolRequest = new CreateUserPoolRequest();

		createUserPoolRequest.setPoolName(tenant.getTenantId() + "-UserPool");

		AdminCreateUserConfigType adminCreateUserConfigType = new AdminCreateUserConfigType();
		adminCreateUserConfigType.setAllowAdminCreateUserOnly(true);
		createUserPoolRequest.setAdminCreateUserConfig(adminCreateUserConfigType);

		List<String> usernameAttributes = new ArrayList<String>();
		usernameAttributes.add("email");
		createUserPoolRequest.setUsernameAttributes(usernameAttributes);

		List<SchemaAttributeType> schema = new ArrayList<SchemaAttributeType>();
		SchemaAttributeType satEmail = new SchemaAttributeType();
		satEmail.setName("email");
		satEmail.setRequired(true);
		satEmail.setAttributeDataType("String");
		satEmail.setMutable(true);
		schema.add(satEmail);

		SchemaAttributeType satTenantId = new SchemaAttributeType();
		satTenantId.setName("tenant-id");
		satTenantId.setRequired(false);
		satTenantId.setAttributeDataType("String");
		satTenantId.setMutable(false);
		schema.add(satTenantId);

		SchemaAttributeType satMuttableAttr = new SchemaAttributeType();
		satMuttableAttr.setName("muttable-attr");
		satMuttableAttr.setRequired(false);
		satMuttableAttr.setAttributeDataType("String");
		satMuttableAttr.setMutable(false);
		schema.add(satMuttableAttr);

		createUserPoolRequest.setSchema(schema);

		CreateUserPoolResult result = cognitoIdentityProvider.createUserPool(createUserPoolRequest);
		String userPoolId = result.getUserPool().getId();
		String authServer = "https://cognito-idp." + getRegion(userPoolId) + ".amazonaws.com/" + userPoolId;

		tenant.setUserPoolId(userPoolId);
		tenant.setAuthServer(authServer);

		LoggingManager.logInfo(tenant.getTenantId(), "Created user pool with id: " + userPoolId);
		LoggingManager.logInfo(tenant.getTenantId(), "Created Auth Server: " + authServer);
		LoggingManager.logInfo(tenant.getTenantId(), "Create User Pool Successful.");

		return tenant;
	}