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"); } }
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")); }