public async Task <IActionResult> VerifyResetPasswordRequest([FromBody] VerifyResetPasswordRequestDto request) { var response = await identityService.VerifyResetPasswordRequest(request); if (!response.IsSuccess) { return(BadRequest(response)); } return(Ok(response)); }
public async Task <BaseResponse> VerifyResetPasswordRequest(VerifyResetPasswordRequestDto request) { var user = await userManager.FindByEmailAsync(request.Email); if (!await userManager.VerifyChangePhoneNumberTokenAsync(user, request.Code, user.PhoneNumber)) { return(new PasswordResetResponse(false, 400, localizer["PasswordResetResponseErrMsg"], new List <ValidationError> { new ValidationError { Name = "Token", Description = localizer["PasswordRestTokenInvalid"] } })); } var passwordValidator = new PasswordValidator <ApplicationUser>(); var passValidatorResult = await passwordValidator.ValidateAsync(userManager, user, request.NewPassword); if (!passValidatorResult.Succeeded) { return(new PasswordResetResponse(false, 400, localizer["PasswordResetResponseErrMsg"], passValidatorResult.Errors.Select(p => new ValidationError { Name = p.Code, Description = p.Description }).ToList())); } var newPassword = userManager.PasswordHasher.HashPassword(user, request.NewPassword); user.PasswordHash = newPassword; user.UpdateDate = DateTime.Now; var result = await userManager.UpdateAsync(user); if (result.Succeeded) { return(new PasswordResetResponse(true, 200, localizer["PasswordRestResponseSuccessMsg"])); } else { return(new PasswordResetResponse(false, 400, localizer["PasswordResetResponseErrMsg"], result.Errors.Select(p => new ValidationError { Name = p.Code, Description = p.Description }).ToList())); } }