Ejemplo n.º 1
0
        public void Post(SetNewPasswordRequest request)
        {
            var userFromToken = Db.Single <UserAuth>(q => q.RecoveryToken == request.Token);

            userFromToken.Throw404NotFoundIfNull("Token not found.");

            var userAuth       = (UserAuth)userAuthRepository.GetUserAuthByUserName(userFromToken.Email);
            var userAuthUpdate = (UserAuth)userAuthRepository.GetUserAuthByUserName(userFromToken.Email);

            userAuthUpdate.RecoveryToken = null;

            userAuthRepository.UpdateUserAuth(userAuth, userAuthUpdate, request.Password);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SetNewPassword([FromRoute] string id, [FromBody] SetNewPasswordRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Result result = await _manageUserService.SetNewPassword(id, request, GetUserId());

            if (result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
Ejemplo n.º 3
0
        public async Task SetNewPassword(SetNewPasswordRequest request)
        {
            if (request?.Code == null)
            {
                throw new AuthException("No code provided");
            }

            IdentityResult passwordValidationResult = await ValidatePassword(request.NewPassword);

            if (!passwordValidationResult.Succeeded)
            {
                throw new AuthException(passwordValidationResult.Errors);
            }

            User user = await _userManager.Users.FirstOrDefaultAsync(x => x.Id == request.UserId);

            if (user == null)
            {
                throw new AuthException("Incorrect user ID ");
            }

            bool isEmailTokenValid = await _userManager.VerifyUserTokenAsync(
                user,
                _userManager.Options.Tokens.PasswordResetTokenProvider,
                UserManager <User> .ResetPasswordTokenPurpose,
                request.Code);

            if (!isEmailTokenValid)
            {
                throw new AuthException("Incorrect code", $"Email token is not valid for user {user}");
            }

            await _userManager.RemovePasswordAsync(user);

            IdentityResult passwordResult = await _userManager.AddPasswordAsync(user, request.NewPassword);

            if (!passwordResult.Succeeded)
            {
                throw new AuthException(passwordResult.Errors);
            }
        }
Ejemplo n.º 4
0
        public async Task <Result> SetNewPassword(string userId, SetNewPasswordRequest setNewPasswordRequest, string adminId)
        {
            ValidationResult validationResult = _setNewPasswordValidator.Validate(setNewPasswordRequest);

            if (!validationResult.IsValid)
            {
                _logger.LogError($"Invlid SetNewPasswordRequest. Admin {adminId}");
                return(Result.Fail(ResultUtils.ToResultError(validationResult.Errors)));
            }

            AppUserEntity appUser = await _userManager.FindByIdAsync(userId);

            if (appUser == null)
            {
                _logger.LogError($"No User with id {userId}. Admin {adminId}");
                return(Result.Fail("no_user", "No User"));
            }

            _logger.LogInformation($"Seting new password for with id {userId}. Admin id {adminId}");

            string passwordResetToken = await _userManager.GeneratePasswordResetTokenAsync(appUser);

            IdentityResult changePasswordResult = await _userManager.ResetPasswordAsync(appUser, passwordResetToken, setNewPasswordRequest.Password);

            if (!changePasswordResult.Succeeded)
            {
                _logger.LogError($"Faild to reset password. UserId {appUser.Id}, admin {adminId}");
                return(Result.Fail(changePasswordResult.Errors));
            }


            Result logoutUserResult = await _sessionService.LogoutUser(new Auth.Session.Models.LogoutUserSessionsRequest(appUser.Id), adminId);

            if (logoutUserResult.Failure)
            {
                return(logoutUserResult);
            }

            _logger.LogInformation($"Added new password to user with id {userId}. Admin id {adminId}");
            return(Result.Ok());
        }
Ejemplo n.º 5
0
 public async Task SetNewPassword(SetNewPasswordRequest request)
 {
     await _authService.SetNewPassword(request);
 }