コード例 #1
0
        public async Task <Result> ResetPassword(ResetPassword resetPassword)
        {
            var validator = new ResetPasswordValidator();
            var result    = validator.Validate(resetPassword).GetResult();

            if (!result.Success)
            {
                return(result);
            }

            var user = await _userManager.FindByNameAsync(resetPassword.UserName);

            var activateResult = await _userManager.ResetPasswordAsync(user, resetPassword.Token, resetPassword.Password);

            if (!activateResult.Succeeded)
            {
                foreach (var error in activateResult.Errors)
                {
                    result.AddValidationFailure("", error.Description);
                }

                return(result);
            }

            if (!user.EmailConfirmed)
            {
                user.EmailConfirmed = true;
                await _userManager.UpdateAsync(user);
            }

            return(result);
        }
コード例 #2
0
        public async Task <IActionResult> ResetPassword([FromBody] ResetPassword.InModel inModel)
        {
            ResetPasswordValidator resetPasswordValidator = new ResetPasswordValidator();
            await resetPasswordValidator.ValidateAndThrowAsync(inModel);

            await _userService.ResetPasword(inModel.IdUser, inModel.NewPasswordHash, inModel.OldPasswordHash);

            return(Ok());
        }
コード例 #3
0
        public void ValidWhenAllDataProvided()
        {
            // arrange
            var validator = new ResetPasswordValidator();
            var dto       = new ResetPasswordDto
            {
                Email             = validEmail,
                Token             = validToken,
                Password          = validPassword,
                ConfirmedPassword = validPassword
            };
            // act
            var result = validator.Validate(dto);

            // assert
            Assert.True(result.IsValid);
        }
コード例 #4
0
        public void InvalidWhenPasswordDifferentThanConfirmedPassword()
        {
            // arrange
            var validator = new ResetPasswordValidator();
            var dto       = new ResetPasswordDto
            {
                Email             = validEmail,
                Token             = validToken,
                Password          = validPassword,
                ConfirmedPassword = differentPassword
            };
            // act
            var result = validator.Validate(dto);

            // assert
            Assert.False(result.IsValid);
        }
コード例 #5
0
        public void InvalidWhenPasswordNotProvided(string password)
        {
            // arrange
            var validator = new ResetPasswordValidator();
            var dto       = new ResetPasswordDto
            {
                Email             = validEmail,
                Token             = validToken,
                Password          = password,
                ConfirmedPassword = password
            };
            // act
            var result = validator.Validate(dto);

            // assert
            Assert.False(result.IsValid);
        }
コード例 #6
0
ファイル: UserService.cs プロジェクト: Maarkis/MeAgendaAiAPI
        public ResponseModel ResetPassword(ResetPassword model)
        {
            ResponseModel    response = new ResponseModel();
            ValidationResult validateResetPassword = new ResetPasswordValidator().Validate(model);

            if (validateResetPassword.IsValid)
            {
                try
                {
                    bool validateToken = JWTService.ValidateToken(model.Token, _signingConfiguration, _tokenConfiguration);
                    if (validateToken)
                    {
                        User user = _userRepository.GetById(model.Id);
                        if (user == null)
                        {
                            response.Message = "Usuário não encontrado";
                            return(response);
                        }

                        user.Password      = Encrypt.EncryptString(model.Password, user.UserId.ToString());
                        user.UpdatedBy     = model.Id;
                        user.LastUpdatedAt = DateTime.Now;

                        _userRepository.Edit(user);


                        response.Success = true;
                        response.Message = "Senha alterada com sucesso";
                    }
                    else
                    {
                        response.Message = "Token expirado";
                    }
                }
                catch (Exception)
                {
                    response.Message = "Erro ao alterar senha, entre em contato com suporte";
                }
            }
            else
            {
                response.Message = validateResetPassword.Errors.FirstOrDefault().ErrorMessage;
            }
            return(response);
        }
        public void Should_ReturnFalse_WhenRequiredInfo_IsNotProvided(string email, string password, string passwordResetToken)
        {
            // Arrange
            var resetPasswordDto = new ResetPasswordDto
            {
                Email              = email,
                Password           = password,
                PasswordResetToken = passwordResetToken
            };

            var resetPasswordValidator = new ResetPasswordValidator();

            // Act
            var validatorResult = resetPasswordValidator.Validate(resetPasswordDto);

            // Assert
            validatorResult.IsValid.ShouldBeFalse();
        }
        public async Task Should_ReturnTrue_WhenRequiredInfo_IsProvided()
        {
            // Arrange
            var resetPasswordDto = new ResetPasswordDto
            {
                Email              = "*****@*****.**",
                Password           = "******",
                PasswordResetToken = "1234xyz"
            };

            var resetPasswordValidator = new ResetPasswordValidator();

            // Act
            var validatorResult = await resetPasswordValidator.ValidateAsync(resetPasswordDto);

            // Assert
            validatorResult.IsValid.ShouldBeTrue();
        }
コード例 #9
0
        public async Task <IActionResult> ResetPassword([FromBody] ResetPasswordDto resetPasswordDto, [FromServices] IResetPasswordService service)
        {
            var resetPasswordValidator = new ResetPasswordValidator();
            var validatorResult        = await resetPasswordValidator.ValidateAsync(resetPasswordDto);

            if (validatorResult.IsValid)
            {
                await service.ResetPassword(resetPasswordDto);

                if (!service.Status.HasErrors)
                {
                    return(Ok());
                }
                return(BadRequest(service.Status.Errors));
            }

            var validationErrors = validatorResult.Errors.Select(error => new ValidationResult(error.ErrorMessage))
                                   .ToImmutableList();

            return(BadRequest(validationErrors));
        }
コード例 #10
0
ファイル: UserController.cs プロジェクト: VirPa/Sidebucks
        public UserController(IMyUser user,
                              IMyFiles myFiles,
                              UserModelValidator userModelValidator,
                              UpdateUserModelValidator updateUserModelValidator,
                              SendEmailConfirmationValidator sendEmailConfirmationValidator,
                              ConfirmEmailValidator confirmEmailValidator,
                              ChangePasswordValidator changePasswordValidator,
                              ForgotPasswordValidator forgotPasswordValidator,
                              ResetPasswordValidator resetPasswordValidator,
                              ResponseBadRequest badRequest)
        {
            _user    = user;
            _myFiles = myFiles;

            _badRequest                     = badRequest;
            _userModelValidator             = userModelValidator;
            _updateUserModelValidator       = updateUserModelValidator;
            _sendEmailConfirmationValidator = sendEmailConfirmationValidator;
            _confirmEmailValidator          = confirmEmailValidator;
            _changePasswordValidator        = changePasswordValidator;
            _forgotPasswordValidator        = forgotPasswordValidator;
            _resetPasswordValidator         = resetPasswordValidator;
        }