public async Task <ActionResult> Register(UserRegistrationObject user)
        {
            var result = await _userManager.CreateAsync(new ApplicationUser { UserName = user.UserName, Email = user.Email }, user.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }
            return(NoContent());
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Register([FromBody] UserRegistrationObject registrationData)
        {
            _logger.LogInformation("Processing user registration");

            var registrationResult = await _authService.RegisterAsync(registrationData);

            _logger.LogInformation("Sending registration response");

            return(registrationResult switch
            {
                UserRegistrationResult.Success => StatusCode((int)HttpStatusCode.Created),
                UserRegistrationResult.UserExists => BadRequest(
                    $"User with email {registrationData.Email} already exists"),
                UserRegistrationResult.BadEmail => BadRequest("Invalid email address"),
                UserRegistrationResult.BadPassword => BadRequest(
                    "Password requirements not met (minimum 8 characters, 1 upper, 1 special, 1 number"),
                UserRegistrationResult.BadName => BadRequest("Name must contain letters only"),
                UserRegistrationResult.DatabaseError => StatusCode((int)HttpStatusCode.InternalServerError),
                _ => StatusCode((int)HttpStatusCode.InternalServerError)
            });
Ejemplo n.º 3
0
        public async Task <UserRegistrationResult> RegisterAsync(UserRegistrationObject registrationData)
        {
            if (await _userRepository.SelectUserAsync(registrationData.Email) != null)
            {
                return(UserRegistrationResult.UserExists);
            }

            if (!CredentialsValidator.IsValidEmail(registrationData.Email))
            {
                return(UserRegistrationResult.BadEmail);
            }

            if (!CredentialsValidator.IsValidPassword(registrationData.Password))
            {
                return(UserRegistrationResult.BadPassword);
            }

            if (!CredentialsValidator.IsValidName(registrationData.Name))
            {
                return(UserRegistrationResult.BadName);
            }

            var salt         = PasswordHashHelper.GenerateSalt();
            var passwordHash = PasswordHashHelper.GenerateHash(registrationData.Password, salt);
            var userObject   = new InsertUserObject
            {
                Email        = registrationData.Email,
                PasswordHash = passwordHash,
                Salt         = salt,
                Name         = registrationData.Name,
                Address      = registrationData.Address,
                PhoneNumber  = registrationData.PhoneNumber,
                IsAdmin      = false,
            };

            return(await _userRepository.InsertUserAsync(userObject)
                ? UserRegistrationResult.Success
                : UserRegistrationResult.DatabaseError);
        }