예제 #1
0
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            if (ModelState.IsValid)
            {
                AppUser user = await Usermanager.FindByEmailAsync(model.Email);

                //AppUser user = CurrentUser;
                if (user != null)
                {
                    if (await Usermanager.IsLockedOutAsync(user))
                    {
                        ModelState.AddModelError("", "hesap kilitli");
                    }

                    await SignInManager.SignOutAsync();

                    Microsoft.AspNetCore.Identity.SignInResult result = await SignInManager.PasswordSignInAsync(user, model.Password, false, false);

                    if (result.Succeeded)
                    {
                        await Usermanager.ResetAccessFailedCountAsync(user);

                        if (TempData["ReturnUrl"] != null)
                        {
                            return(Redirect(TempData["ReturnUrl"].ToString()));
                        }
                        return(RedirectToAction("Index", "Member"));
                    }
                    else
                    {
                        await Usermanager.AccessFailedAsync(user);

                        int fail = await Usermanager.GetAccessFailedCountAsync(user);

                        ModelState.AddModelError("", $"{fail} kez basarisiz giris");
                        if (fail == 3)
                        {
                            await Usermanager.SetLockoutEndDateAsync(user, new System.DateTimeOffset(DateTime.Now.AddMinutes(20)));

                            ModelState.AddModelError("", "ban for 20 minutes");
                        }
                        else
                        {
                            ModelState.AddModelError(nameof(model.Email), "gecersiz mail veya sifre");
                        }
                    }
                }
                else
                {
                    //return RedirectToAction()
                    ModelState.AddModelError(nameof(model.Email), "gecersiz mail veya sifre");
                }
            }
            return(View());
        }