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()); }
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); }
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)); }