public async Task <IActionResult> RecoverPassword(RecoverPasswordVM model) { string decodeToken = System.Web.HttpUtility.UrlDecode(model.RecoverToken); Users user = await userManager.FindByIdAsync(model.UserId); var result = await userManager.ResetPasswordAsync(user, decodeToken, model.Password); var updateResult = await userManager.UpdateAsync(user); if (result.Succeeded && updateResult.Succeeded) { CreateModal("exito", "Terminado", "Contraseña actualizada satisfactoriamente.", "Continuar", null, "Redirect('/')", null); return(View(model)); } else { if (result.Errors.ToList()[0].Description == "Invalid token.") { CreateModal("error", "Error", "El token para recuperación del password se ha vencido o ha sido usado previamente.", "Continuar", null, "Redirect('/')", null); } else { CreateModal("error", "Error", result.Errors.ToList()[0].Description, "Continuar", null, "Redirect('/')", null); } return(View(model)); } }
public async Task <ActionResult> RecoverPassword(RecoverPasswordVM model) { try { var userStore = _membershipTools.NewUserStore(); var userManager = _membershipTools.UserManager; var user = await userStore.FindByEmailAsync(model.Email); if (user == null) { ModelState.AddModelError(string.Empty, $"{model.Email} mail adresine kayıtlı bir üyeliğe erişilemedi"); return(View(model)); } var newPassword = StringHelpers.GetCode().Substring(0, 6) + "A0*"; var hashPassword = userManager.PasswordHasher.HashPassword(user, newPassword); await userStore.SetPasswordHashAsync(user, hashPassword); var result = userStore.Context.SaveChanges(); if (result == 0) { var errorVM = new ErrorVM() { Text = $"Bir hata oluştu", ActionName = "RecoverPassword", ControllerName = "Account", ErrorCode = "500" }; TempData["ErrorMessage"] = JsonConvert.SerializeObject(errorVM); return(RedirectToAction("Error500", "Home")); } var emailService = new EmailService(); var body = $"Merhaba <b>{user.Name} {user.Surname}</b><br>Hesabınızın parolası sıfırlanmıştır<br> Yeni parolanız: <b>{newPassword}</b> <p>Yukarıdaki parolayı kullanarak sitemize giriş yapabilirsiniz.</p>"; emailService.Send(new EmailModel() { Body = body, Subject = $"{user.UserName} Şifre Kurtarma" }, user.Email); } catch (Exception ex) { var errorVM = new ErrorVM() { Text = $"Bir hata oluştu {ex.Message}", ActionName = "RecoverPassword", ControllerName = "Account", ErrorCode = "500" }; TempData["ErrorMessage"] = JsonConvert.SerializeObject(errorVM); return(RedirectToAction("Error500", "Home")); } TempData["Message"] = $"{model.Email} mail adresine yeni şifre gönderildi."; return(View()); }
public IActionResult RecoverPassword(string token, string u) { RecoverPasswordVM model = new RecoverPasswordVM { UserId = u, RecoverToken = token }; ViewBag.Success = false; return(View(model)); }
public IActionResult RecoverPassword(RecoverPasswordVM passwordVM) { try { int id = userBLL.CheckUserForPassword(passwordVM.Username, passwordVM.Email, passwordVM.FirstName, passwordVM.LastName); bool check = MailHelper.RecoverPasswordMail(passwordVM.Username, passwordVM.Email, id); if (check) { ViewBag.Check = "success"; ViewBag.Message = "E-mail adresinize link gönderildi."; } else { throw new Exception("Şuan da şifre yenileme linki gönderilemiyor. Daha sonra tekrar deneyiniz."); } return(View()); } catch (Exception ex) { ViewBag.Message = ex.Message; return(View()); } }