async createUser()

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)
            );
        }
    }