Пример #1
0
        protected async override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            try
            {
                ClientKeyViewModel   key   = new ClientKeyViewModel();
                ClientTokenViewModel token = new ClientTokenViewModel();
                if (Session["user_id"] != null)
                {
                    key.user_id        = Session["user_id"].ToString();
                    client.BaseAddress = baseurl;
                    var ClientToken = client.PostAsJsonAsync("api/Server/Token", key).Result;
                    if (ClientToken.ReasonPhrase != "Bad Request")
                    {
                        var ClientTokenResult = await ClientToken.Content.ReadAsAsync <ClientTokenViewModel>();

                        client.DefaultRequestHeaders.Add("Token", ClientTokenResult.client_token);
                    }
                    else
                    {
                        filterContext.Result = new RedirectResult("~/Login/Index");
                    }
                }
                else
                {
                    TempData["error"]    = "Session Expired.";
                    filterContext.Result = new RedirectResult("~/Login/Index");
                }
            }
            catch (Exception e)
            {
                TempData["error"]    = e.Message;
                filterContext.Result = new RedirectResult("~/Login/Index");
            }
        }
Пример #2
0
        public async Task <ActionResult> Verify(LoginViewModel data)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    ClientKeyViewModel key = new ClientKeyViewModel();
                    key.user_id         = data.user_id;
                    key.valid           = true;
                    key.createdDateTime = DateTime.Now;
                    client.BaseAddress  = baseurl;
                    var User       = client.PostAsJsonAsync("api/Login/CheckUser", data).Result;
                    var Login      = client.PostAsJsonAsync("api/Login/Login", data).Result;
                    var UserResult = await User.Content.ReadAsAsync <LoginResponseViewModel>();

                    var LoginResult = await Login.Content.ReadAsAsync <LoginResponseViewModel>();

                    if (UserResult != null)
                    {
                        if (LoginResult != null)
                        {
                            if (LoginResult.active == false)
                            {
                                ViewBag.Error = "Account is inactive. Contact your system administrator.";
                                return(View("Login"));
                            }

                            if (LoginResult.locked == true)
                            {
                                ViewBag.Error = "Account is locked. Contact your system administrator.";
                                return(View("Login"));
                            }

                            var ClientKey = client.PostAsJsonAsync("api/Server/Server", key).Result;
                            if (ClientKey.ReasonPhrase == "Bad Request")
                            {
                                ViewBag.Error = "Bad Request.";
                                return(View("Login"));
                            }
                            var ClientTokenResult = await ClientKey.Content.ReadAsAsync <ClientTokenViewModel>();

                            Session["user_id"] = LoginResult.user_id;
                            Session.Timeout    = (int)ClientTokenResult.expiresOn.Subtract(ClientTokenResult.createdDateTime).TotalMinutes;
                            Session["fname"]   = LoginResult.fname;
                            var cookie = new HttpCookie("user_id");
                            cookie.Value = LoginResult.user_id;
                            Response.Cookies.Add(cookie);
                            await client.PutAsJsonAsync("api/login/ResetAttempts", data);

                            return(RedirectToAction("Index", "Dashboard"));
                        }

                        if (UserResult.locked == false)
                        {
                            var loginAttempts = client.PostAsJsonAsync("api/Login/UpdateAttempts", data).Result;
                            ViewBag.Error = "Invalid Login. You have " + (5 - UserResult.loginAttempts) + " attempt(s) left.";
                        }
                        else
                        {
                            ViewBag.Error = "Account Locked.";
                        }
                    }
                }
                catch (Exception e)
                {
                    ViewBag.Error = e.Message;
                }
            }
            else
            {
                ViewBag.Error = "Invalid Login.";
            }
            return(View("Login"));
        }