public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                var shapesManager = new ShapesManager();
                shapesManager.Clear();
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        public ActionResult LogOff()
        {
            var shapesManager = new ShapesManager();

            shapesManager.Clear();

            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            return(RedirectToAction("Index", "Home"));
        }
        public ActionResult LoadCollection()
        {
            if (!User.Identity.IsAuthenticated)
            {
                Response.StatusCode = 204;
                return(Json(
                           new { result = "" },
                           JsonRequestBehavior.AllowGet
                           ));
            }

            var userName         = User.Identity.Name;
            var shapesManager    = new ShapesManager();
            var shapesCollection = shapesManager.LoadForUser(userName);

            shapesManager.Clear();

            return(Json(
                       new { result = shapesCollection },
                       JsonRequestBehavior.AllowGet
                       ));
        }