public async Task <IActionResult> ChangePassword(string email, [FromBody] ChangedPasswordDto changedPassword)
        {
            if (changedPassword == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                return(NotFound());
            }

            var result = await _userManager.ChangePasswordAsync(user, changedPassword.OldPassword, changedPassword.NewPassword);

            if (!result.Succeeded)
            {
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError("Error", error.Description);
                }
                return(BadRequest(ModelState));
            }

            return(NoContent());
        }
示例#2
0
        public async Task <OperationDetails> ChangePasswordAsync(ChangedPasswordDto password)
        {
            var result = _uow.UserManager.ChangePasswordAsync(password.UserId, password.OldPassword, password.NewPassword);

            if (result.Result.Succeeded)
            {
                return(new OperationDetails(true, "Password changed successfully", ""));
            }

            return(new OperationDetails(false, result.Result.Errors.FirstOrDefault(), "Password"));
        }
        public async Task ChangePassword_ReturnsUnprocessableEntityObjectResponse_GivenInvalidResetPassword()
        {
            //Arrange
            ChangedPasswordDto changedPassword = new ChangedPasswordDto();

            _controller.ModelState.AddModelError("Password", "Required");

            //Act
            var response = await _controller.ChangePassword(null, changedPassword);

            //Assert
            Assert.IsType <UnprocessableEntityObjectResult>(response);
        }
        public async Task ChangePassword_ReturnsNotFoundResponse_GivenInvalidEmail()
        {
            //Arrange
            ChangedPasswordDto changedPassword = new ChangedPasswordDto();

            _mockUserManager.Setup(u => u.FindByEmailAsync(It.IsAny <string>()))
            .ReturnsAsync(null as User);

            //Act
            var response = await _controller.ChangePassword(null, changedPassword);

            //Assert
            Assert.IsType <NotFoundResult>(response);
        }
        public async Task ChangePassword_ReturnsBadRequestResponse_GivenInvalidPassword()
        {
            //Arrange
            ChangedPasswordDto changedPassword = new ChangedPasswordDto();

            _mockUserManager.Setup(u => u.ChangePasswordAsync(It.IsAny <User>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Failed(new IdentityError {
                Description = "invalid password"
            }));

            //Act
            var response = await _controller.ChangePassword(null, changedPassword);

            //Assert
            Assert.IsType <BadRequestObjectResult>(response);
        }
示例#6
0
        public async Task <ActionResult> ChangePassword(ChangePasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                ChangedPasswordDto password = new ChangedPasswordDto
                {
                    UserId      = User.Identity.GetUserId(),
                    NewPassword = model.NewPassword,
                    OldPassword = model.OldPassword
                };

                OperationDetails operationDetails = await UserService.ChangePasswordAsync(password);

                if (operationDetails.Succedeed)
                {
                    return(View("SuccessChangePassword"));
                }

                ModelState.AddModelError(operationDetails.Property, operationDetails.Message);
            }

            return(View(model));
        }