protected void Application_Start()
 {
     AppDomain.CurrentDomain.UnhandledException += (sender, error) => File.AppendAllText("App_Data/Fatal.log", error.ExceptionObject.ToString() + "\r\n");
     ResourcesUtility ru = new ResourcesUtility(Server);
     ru.GenerateJSResources();
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
     RouteConfig.RegisterRoutes(RouteTable.Routes);
     BundleConfig.RegisterBundles(BundleTable.Bundles);
     ModelBinders.Binders.Add(typeof(EditAccountModel), new EditAccountModelBinder());
     //ModelBinders.Binders.Add(typeof(EditAccountModel), new LanguageObjectPreferencesBinder());
     //ModelBinders.Binders.DefaultBinder = new CustomModelBinder();
 }
        public System.Web.Mvc.ActionResult LogIn(LogInModel loginModel)
        {
            if (ModelState.IsValid)
            {
                if (Membership.ValidateUser(loginModel.UserName, loginModel.Password))
                {
                    ResourcesUtility ru = new ResourcesUtility(Server);
                    ru.GenerateJSResources();

                    //AccountInfo user = HttpContext.Session["UserAccountInfo"] == null ? null : HttpContext.Session["UserAccountInfo"] as AccountInfo;
                    AccountInfo user = CurrentUser.Details();

                    bool isLogged = false;
                    isLogged = HttpContext.Session["UserLogged"] != null && (bool)HttpContext.Session["UserLogged"];

                    if (isLogged)
                    {
                        Session.Add("logged", true);
                        FormsAuthentication.SetAuthCookie(user.AccountId.ToString(), loginModel.RememberMe);

                        Session["UserAccountInfo"] = user;

                        //if (loginModel.RememberMe)
                        //{
                        //    HttpContext.Cache.Insert(user.AccountId.ToString(), user, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromDays(365));
                        //}
                        //else if (HttpContext.Cache[user.AccountId.ToString()] != null)
                        //{
                        //    HttpContext.Cache.Remove(user.AccountId.ToString());
                        //}
                        HttpContext.Session.Remove("UserLogged");
                    }

                    if (user.Role == AccountRoles.Carer)
                    {
                        return RedirectToAction("List", "Users");
                    }
                    else if (user.Role == AccountRoles.User)
                    {
                        return RedirectToAction("New", "Documents");
                    }
                }
                else
                {
                    ViewData["ShowHead"] = true;
                    ModelState.AddModelError("", ClientDefault.LogIn_Log_In_Failed);
                }
            }

            return View("LogIn", loginModel);
        }