Esempio n. 1
0
        public async Task <ICollection <ErrorViewModel> > CheckLoginCredentials(LoginWriteModel loginModel)
        {
            var errors = await CheckDoesTheUserExistAsync(loginModel.Username);

            if (!errors.Any())
            {
                await VerifyUserPasswordAsync(loginModel, errors);
            }

            return(errors);
        }
Esempio n. 2
0
        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));
            }
        }
Esempio n. 3
0
        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
            }));
        }
Esempio n. 4
0
        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)));
            }
        }