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));
        }
示例#4
0
 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());
     }
 }