public ActionResult SecretCode(SecretCodeModel secretCode) { try { HttpCookie cookie = HttpContext.Request.Cookies.Get(".SECURECODE"); CookieUserInfo userInfo = (CookieUserInfo)HttpRuntime.Cache.Get(HttpContext.Request.UserHostAddress + HttpContext.Request.UserAgent); if ((cookie == null) || (userInfo == null) || (cookie.Value != userInfo.Cookie.Value)) { return(RedirectToAction("Index")); } Customer customer = _repo.Customers.GetAll(c => (c.Login == userInfo.LoginModel.Name) && (c.Passoword == userInfo.LoginModel.Password)).ToList().First(); var card = customer.AccessCards.First(); var codes = _repo.AccessCodes.GetAll(c => c.AccessCardID == card.AccessCardID).ToList(); var code = codes.Where(c => c.Number == secretCode.CodeIndex).First(); var codeCount = _repo.AccessCodes.GetAll(c => c.AccessCardID == card.AccessCardID).Count(); if (code.Code == secretCode.EnteredCode) { WebSecurity.Login(userInfo.LoginModel.Name, userInfo.LoginModel.Password); RedirectToAction("Index", "Home"); } else { CodeEnterFail(card); if (card.IsBlocked == true) { return(View("AccountBlocked")); } ModelState.Remove("CodeIndex"); var secretCodeModel = new SecretCodeModel() { CodeIndex = (new Random()).Next(1, codeCount), Remaining = GetEnterCodeRemaining(card) }; ResetCookie(userInfo.LoginModel); ModelState.AddModelError("", "Неправильный код. Попробуйте еще раз"); return(View(secretCodeModel)); } return(RedirectToAction("Index", "Home")); } catch (Exception ex) { return(RedirectToAction("Index", "Home")); } }
public ActionResult SecretCode() { HttpCookie cookie = HttpContext.Request.Cookies.Get(".SECURECODE"); CookieUserInfo userInfo = (CookieUserInfo)HttpRuntime.Cache.Get(HttpContext.Request.UserHostAddress + HttpContext.Request.UserAgent); if ((cookie == null) || (userInfo == null) || (cookie.Value != userInfo.Cookie.Value)) { return(RedirectToAction("Index")); } Customer customer = _repo.Customers.GetAll(c => (c.Login == userInfo.LoginModel.Name) && (c.Passoword == userInfo.LoginModel.Password)).ToList().First(); var card = customer.AccessCards.First(); var codeCount = _repo.AccessCodes.GetAll(c => c.AccessCardID == card.AccessCardID).Count(); ModelState.Remove("CodeIndex"); var secretCodeModel = new SecretCodeModel() { CodeIndex = (new Random()).Next(1, codeCount), Remaining = GetEnterCodeRemaining(card) }; ResetCookie(userInfo.LoginModel); return(View(secretCodeModel)); }