public async Task <ICollection <ErrorViewModel> > CheckLoginCredentials(LoginWriteModel loginModel) { var errors = await CheckDoesTheUserExistAsync(loginModel.Username); if (!errors.Any()) { await VerifyUserPasswordAsync(loginModel, errors); } return(errors); }
private async Task VerifyUserPasswordAsync(LoginWriteModel loginModel, ICollection <ErrorViewModel> errors) { var user = await _userRepository.GetUserByUsernameAsync(loginModel.Username); var authenticated = _passwordHasher.VerifyPassword(user.PasswordHash, loginModel.Password); if (!authenticated) { errors.Add(ErrorViewModel.Factory.NewErrorFromMessage(_localizer["IncorrectPasswordErrorMessage"] .Value)); } }
public async Task <RequestResponseModel <AuthenticationViewModel> > AuthenticateUserAsync(LoginWriteModel loginModel) { var errors = await _userValidator.CheckLoginCredentials(loginModel); if (errors.Any()) { return(new RequestResponseModel <AuthenticationViewModel>(StatusCodes.Status400BadRequest, errors, null)); } var user = await _userRepository.GetUserByUsernameAsync(loginModel.Username); var authenticationToken = _tokenGenerator.GenerateToken(user.Username, user.Role); return(new RequestResponseModel <AuthenticationViewModel>(StatusCodes.Status200OK, Enumerable.Empty <ErrorViewModel>(), new AuthenticationViewModel { AuthenticationToken = authenticationToken, Username = loginModel.Username, UserId = user.UserId })); }
public async Task <ActionResult <AuthenticationViewModel> > AuthenticateUserAsync([FromBody] LoginWriteModel loginData) { try { var response = await _userService.AuthenticateUserAsync(loginData); return(response.StatusCode == StatusCodes.Status200OK ? Ok(response.Result) : StatusCode(response.StatusCode, response.Errors)); } catch (Exception e) { _logger.LogError(e, string.Empty); return(StatusCode(StatusCodes.Status500InternalServerError, ErrorViewModel.Factory.NewErrorFromException(e))); } }