/// <summary> /// Asynchronous Method To Complete Password Change /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <ResponseViewModel> CompleteResetPasswordAsync(CompleteForgotPasswordInputModel model) { try { AppUser user = new AppUser().Empty; if (model.Platform.ToLower() == Res.MOBILE_PLATFORM) { user = await _userManager.FindByEmailAsync(model.Email); } else { var otpCode = _otpService.VerifyToken(model.OtpCode, model.Platform); user = _userManager.FindByIdAsync(otpCode.AppUserId.ToString()).Result; } if (!user.EmailConfirmed) { return(Failed(ResponseMessageViewModel.EMAIL_NOT_CONFIRMED, ResponseErrorCodeStatus.EMAIL_NOT_CONFIRMED)); } try { _otpAppService.ValidateOTP(user.Id, model.OtpCode, model.Platform); } catch (InvalidTokenCodeExcepton e) { return(Failed(e.Message, ResponseErrorCodeStatus.INVALID_CONFIRMATION_CODE)); } catch (ExpiredTokenCodeException e) { return(Failed(e.Message, ResponseErrorCodeStatus.EXPIRED_CONFIRMATION_CODE)); } var token = await _userManager.ResetPasswordAsync(user, user.Token, model.Password); if (token.Succeeded) { _ = _emailService.SendCompleteResetPassword(user.Email, user.FirstName); return(Ok()); } return(Failed(ResponseMessageViewModel.UNABLE_TO_RESET_PASSWORD, ResponseErrorCodeStatus.UNABLE_TO_RESET_PASSWORD)); } catch (Exception e) { return(Create(false, ResponseMessageViewModel.UNSUCCESSFUL)); } }
public async Task <IActionResult> CompleteResetAsync([FromBody] CompleteForgotPasswordInputModel model) { if (!ModelState.IsValid) { return(BadRequest()); } var result = await _userService.CompleteResetPasswordAsync(model); if (result.Status) { return(Ok(result)); } return(BadRequest(result)); }