Esempio n. 1
0
        public ActionResult ResetPassword(string guid)
        {
            var userSetNewPasswordModel = new SetNewPasswordModel()
            {
                Id = Guid.Parse(guid)
            };

            return(View("ResetPassword", userSetNewPasswordModel));
        }
Esempio n. 2
0
        public ActionResult ResetPassword(SetNewPasswordModel userSetNewPasswordModel)
        {
            if (ModelState.IsValid)
            {
                userSetNewPasswordModel.SetPassword();

                return(View("PasswordSet"));
            }
            return(View("ResetPassword"));
        }
        public async Task <ActionResult> SetNewPassword(SetNewPasswordModel model)
        {
            var answer = new SetNewPasswordModel
            {
                RequestId = model.RequestId
            };

            if (!ModelState.IsValid)
            {
                answer.Errors = ModelState.Values.SelectMany(state => state.Errors.Select(error => error.ErrorMessage)).ToArray();
                return(View(answer));
            }

            var userId = requestRepo.FindUserId(model.RequestId);

            if (userId == null)
            {
                answer.Errors    = new[] { "Запрос не найден" };
                answer.RequestId = null;
                return(View(answer));
            }

            var result = await userManager.RemovePasswordAsync(userId);

            if (!result.Succeeded)
            {
                answer.Errors = result.Errors.ToArray();
                return(View(answer));
            }

            result = await userManager.AddPasswordAsync(userId, model.NewPassword);

            if (!result.Succeeded)
            {
                answer.Errors = result.Errors.ToArray();
                return(View(answer));
            }

            metricSender.SendCount("restore_password.set_new_password");

            await requestRepo.DeleteRequest(model.RequestId);

            var user = await userManager.FindByIdAsync(userId);

            if (user == null)
            {
                answer.Errors = new[] { "Пользователь был удалён администраторами" };
                return(View(answer));
            }

            await AuthenticationManager.LoginAsync(HttpContext, user, false);

            return(RedirectToAction("Index", "Home"));
        }
Esempio n. 4
0
        public async Task SetNewPassword_ResetPassSuccess_Ok()
        {
            UserController controller = new UserController(_loggerMock.Object,
                                                           MockUserService(true, true, true, true, true, true, true),
                                                           MockEmailService(true),
                                                           _envSettingsMock.Object);
            SetNewPasswordModel setNewPassModel = CreateSetNewPasswordModel();

            var result = await controller.SetNewPassword(setNewPassModel);

            Assert.IsType <OkResult>(result);
        }
Esempio n. 5
0
        public async Task SetNewPassword_UserNotExists_BadRequest()
        {
            UserController controller = new UserController(_loggerMock.Object,
                                                           MockUserService(true, false),
                                                           MockEmailService(true),
                                                           _envSettingsMock.Object);
            SetNewPasswordModel setNewPassModel = CreateSetNewPasswordModel();

            var result = await controller.SetNewPassword(setNewPassModel);

            Assert.IsType <BadRequestResult>(result);
        }
Esempio n. 6
0
        public async Task <bool> SetNewPassword(SetNewPasswordModel model, CancellationToken cancellationToken)
        {
            var user = await _userRepository.GetByIdAsync(cancellationToken, new Guid(User.FindFirstValue(ClaimTypes.NameIdentifier)));

            if (!await _userManager.CheckPasswordAsync(user, model.OldPassword))
            {
                throw new AppException("رمزعبور قدیمی اشتباه است !");
            }

            var result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.Password);

            return(result.Succeeded);
        }
Esempio n. 7
0
        public async Task <IActionResult> SetNewPassword([FromBody] SetNewPasswordModel body)
        {
            var user = await _userService.GetUserByIdAsync(body.UserId);

            if (user == null)
            {
                _logger.LogError($"Invalid password reset attemp. User with id {body.UserId} doesn't exist.");
                return(BadRequest());
            }
            var result = await _userService.ResetPasswordAsync(user, body.Token, body.Password);

            if (!result.Succeeded)
            {
                _logger.LogInformation(ControllerExtensions.IdentityErrorBuilder($"Error when resetting password for user {user.Email}. Identity errors: ", result.Errors));
                Dictionary <string, string[]> identityErrors = ControllerExtensions.IdentityErrorsToDictionary(result.Errors);
                return(ValidationError(identityErrors));
            }
            return(Ok());
        }