예제 #1
0
        public async Task <ActionResult> RecoverPassword(RecoverPasswordViewModel model)//RecoverPasswordViewModel içindekileri model nesnemle ulaşabilirim.
        {
            try
            {
                var userStore   = NewUserStore();
                var userManager = NewUserManager();
                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);//Yeni şifre veriyoruz ilk 6 hanesini
                await userStore.SetPasswordHashAsync(user, userManager.PasswordHasher.HashPassword(newPassword));

                var result = userStore.Context.SaveChanges();
                if (result == 0)
                {
                    TempData["Model"] = new ErrorViewModel()
                    {
                        Text           = $"Bir hata oluştu",
                        ActionName     = "RecoverPassword",
                        ControllerName = "Account",
                        ErrorCode      = 500
                    };
                    return(RedirectToAction("Error", "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 sistemize giriş yapabilirsiniz.</p>";
                emailService.Send(new IdentityMessage()
                {
                    Body = body, Subject = $"{user.UserName} Şifre Kurtarma"
                }, user.Email);
            }
            catch (Exception ex)
            {
                TempData["Model"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "RecoverPassword",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error", "Home"));
            }



            return(View());
        }
        public async Task <JsonResult> SendPassword(string id)
        {
            try
            {
                var userStore = NewUserStore();
                var user      = await userStore.FindByIdAsync(id);

                if (user == null)
                {
                    return(Json(new ResponseData()
                    {
                        message = "Kullanıcı bulunamadı",
                        success = false
                    }));
                }

                var newPassword = StringHelpers.GetCode().Substring(0, 6);
                await userStore.SetPasswordHashAsync(user, NewUserManager().PasswordHasher.HashPassword(newPassword));

                await userStore.UpdateAsync(user);

                userStore.Context.SaveChanges();

                string SiteUrl = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host +
                                 (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port);
                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 sistemize giriş yapabilirsiniz.</p>";
                emailService.Send(new IdentityMessage()
                {
                    Body = body, Subject = $"{user.UserName} Şifre Kurtarma"
                }, user.Email);

                return(Json(new ResponseData()
                {
                    message = "Şifre sıfırlama maili gönderilmiştir",
                    success = true
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ResponseData()
                {
                    message = $"Bir hata oluştu: {ex.Message}",
                    success = false
                }));
            }
        }
예제 #3
0
        public async Task <ActionResult> ChangePassword(ProfilePasswordViewModel _model)
        {
            var model = _model.ChangePasswordViewModel;

            try
            {
                var user = await _membershipTools.UserManager.GetUserAsync(HttpContext.User);

                //var id = _membershipTools.IHttpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.Name)?.Value;
                //var user = await _membershipTools.UserManager.FindByIdAsync(id);

                var data = new ChangePasswordViewModel()
                {
                    OldPassword        = model.OldPassword,
                    NewPassword        = model.NewPassword,
                    ConfirmNewPassword = model.ConfirmNewPassword
                };

                model = data;
                if (!ModelState.IsValid)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                var result = await _membershipTools.UserManager.ChangePasswordAsync(
                    await _membershipTools.UserManager.GetUserAsync(HttpContext.User),
                    model.OldPassword, model.NewPassword);

                if (result.Succeeded)
                {
                    var emailService = new EMailService();
                    var body         =
                        $"Merhaba <b>{user.Name} {user.Surname}</b><br>Hesabınızın şifresi değiştirilmiştir. <br> Bilginiz dahilinde olmayan değişiklikler için hesabınızı güvence altına almanızı öneririz.</p>";
                    emailService.Send(new MailModel()
                    {
                        Body = body, Subject = "Şifre Değiştirme hk."
                    }, user.Email);

                    return(RedirectToAction("Logout", "Account"));
                }
                else
                {
                    var err = "";
                    foreach (var resultError in result.Errors)
                    {
                        err += resultError + " ";
                    }

                    ModelState.AddModelError("", err);
                    return(RedirectToAction("Index", "Home"));
                }
            }
            catch (Exception ex)
            {
                TempData["Message"] = new ErrorViewModel()
                {
                    Text           = $"Bir hata oluştu {ex.Message}",
                    ActionName     = "ChangePassword",
                    ControllerName = "Account",
                    ErrorCode      = 500
                };
                return(RedirectToAction("Error500", "Home"));
            }
        }