in source/services/users/users.ts [171:223]
async createUser(user: UserInfo): Promise<UserInfo | ErrorReturn> {
if (!COMMON_UTIL.isStringValuesValid([user.name, user.email, user.group])) {
return Promise.reject(
COMMON_UTIL.getErrorObject('CreateUserFailure', 400, 'User name and E-Mail and Group cannot be empty.')
);
}
let pattern = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*(\+[a-z0-9-]+)?@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (!pattern.test(user.email)) {
return Promise.reject(
COMMON_UTIL.getErrorObject('CreateUserFailure', 400, `The E-Mail address is invalid: ${user.email}.`)
);
}
const params = {
UserPoolId: this.userPool,
Username: user.email,
DesiredDeliveryMediums: ['EMAIL'],
ForceAliasCreation: true,
UserAttributes: [
{
Name: 'email',
Value: user.email
},
{
Name: 'nickname',
Value: user.name
}
]
};
try {
// Creates a user
let data = await this.cognitoIdentityServiceProvider.adminCreateUser(params).promise();
user.username = data.User.Username;
user.status = data.User.UserStatus;
// Sets a group for the user
await this.setUserGroup(user.username, user.group);
// Sends a metric
if (this.sendAnonymousUsageData === 'Yes') {
await COMMON_UTIL.sendAnonymousMetric(this.solutionId, this.solutionVersion, this.solutionUuid, `${user.group}Created`);
}
return Promise.resolve(user);
} catch (error) {
LOGGER.error(`createUser Error: ${JSON.stringify(error)}`);
return Promise.reject(
COMMON_UTIL.getErrorObject('CreateUserFailure', 500, 'Error occured while creating a user.', error)
);
}
}