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