/// <summary> /// Perform the forgotten password process based on the given input model /// </summary> /// <param name="inputModel">The forgotten password input model object</param> /// <returns>Forgotten password view model correctly populated for display, regardless of mode</returns> public ForgottenPasswordViewModel ForgottenPassword(ForgottenPasswordInputModel inputModel) { ForgottenPasswordViewModel viewModel; switch (inputModel.Mode) { case GlobalConstants.PASSWORD_ENC_MODE_INITIAL: viewModel = new ForgottenPasswordViewModel(true); viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; break; case GlobalConstants.PASSWORD_ENC_MODE_USER_SIGNED_IN: viewModel = new ForgottenPasswordViewModel(true); viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_USER_SIGNED_IN; break; case GlobalConstants.PASSWORD_ENC_MODE_RESPONSE: viewModel = getCustomerDetailsFromBackEnd(inputModel); break; default: viewModel = new ForgottenPasswordViewModel(true); break; } return(viewModel); }
public IActionResult ForgottenPassword(string returnUrl) { ForgottenPasswordInputModel vm = new ForgottenPasswordInputModel { ReturnUrl = returnUrl }; return(View(vm)); }
public async Task <IActionResult> ForgottenPassword(ForgottenPasswordInputModel model) { if (ModelState.IsValid) { var user = await _userManager.FindByEmailAsync(model.Email); if (user == null || !(await _userManager.IsEmailConfirmedAsync(user))) { return(View(model)); } var code = await _userManager.GeneratePasswordResetTokenAsync(user); /* Mail */ string mailMessage = $"Obnovení hesla zahájíte zadáním kódu: " + code; var callbackUrl = Url.Action( "ResetPassword", "Account", values: new { code }, protocol: Request.Scheme); mailMessage += "\nMůžete použít vygenerovaný odkaz: " + callbackUrl; string htmlBody = await _razorRenderer.RenderViewToStringAsync("/Emails/Pages/PasswordReset.cshtml", new ConfirmEmailViewModel { ConfirmationCode = code, User = user, ConfirmEmailUrl = callbackUrl != "" ? callbackUrl : "", AppUrl = HtmlEncoder.Default.Encode(Request.Scheme + "://" + Request.Host.Value) }); _emailSender.HtmlMessage = htmlBody; await _emailSender.SendEmailAsync(user.Email, "Resetování hesla", mailMessage); return(View("ForgottenPasswordConfirmation", model)); } return(View(model)); }
/// <summary> /// Perform the customer details retrieval process and return a view model with error handling /// </summary> /// <param name="inputModel">The forgotten password input model object</param> /// <returns>Forgotten password view model correctly populated for display</returns> private ForgottenPasswordViewModel getCustomerDetailsFromBackEnd(ForgottenPasswordInputModel inputModel) { ErrorObj talentErrObj = new ErrorObj(); DECustomer deCust = new DECustomer(); Mapper.CreateMap <ForgottenPasswordInputModel, DECustomer>(); DECustomerV11 deCustV11 = new DECustomerV11(); ForgottenPasswordViewModel viewModel = new ForgottenPasswordViewModel(true); deCust = Mapper.Map <DECustomer>(inputModel); deCust.Source = GlobalConstants.SOURCE; deCustV11.DECustomersV1.Add(deCust); _talCust.DeV11 = deCustV11; _talCust.Settings = Environment.Settings.DESettings; talentErrObj = _talCust.CustomerRetrieval(); viewModel.Error = Data.PopulateErrorObject(talentErrObj, _talCust.ResultDataSet, _talCust.Settings, 2); if (!viewModel.Error.HasError) { //Add the tokens to the result Set _dtCustomerResults = _talCust.ResultDataSet.Tables["CustomerResults"]; if (_dtCustomerResults.Rows.Count == 1) { _doTokenHashing = inputModel.DoTokenHashing; checkCustomerTokens(); if (generateResetTokens()) { if (generateTableRecords()) { generateEmail(); viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_RESPONSE; } else { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; viewModel.Error.HasError = true; viewModel.Error.ErrorMessage = viewModel.GetPageText("UnspecifiedError"); _talCust.Settings.Logging.ErrorObjectLog("ForgottenPassword.aspx - Reset Password email", "FPW", "Cannot create reset password table records", "PasswordEncryptionLog"); } } else { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; viewModel.Error.HasError = true; viewModel.Error.ErrorMessage = viewModel.GetPageText("UnspecifiedError"); _talCust.Settings.Logging.ErrorObjectLog("ForgottenPassword.aspx - Reset Password email", "FPW", "Cannot create reset password tokens", "PasswordEncryptionLog"); } } else { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; viewModel.Error.HasError = true; viewModel.Error.ErrorMessage = viewModel.GetPageText("UnspecifiedError"); _talCust.Settings.Logging.ErrorObjectLog("ForgottenPassword.aspx - Reset Password email", "FPW", "No customer records have been returned from WS009R", "PasswordEncryptionLog"); } } else { viewModel.Mode = GlobalConstants.PASSWORD_ENC_MODE_INITIAL; _talCust.Settings.Logging.ErrorObjectLog("ForgottenPassword.aspx - Reset Password email", "FPW", viewModel.Error.ErrorMessage, "PasswordEncryptionLog"); } return(viewModel); }