public ActionResult Login(string returnUrl, string actionPerformed)
 {
     ViewBag.ReturnUrl = returnUrl;
     var model = new LoginViewModel();
     model.ActionPerformed = !string.IsNullOrWhiteSpace(actionPerformed);
     return View(model);
 }
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            model.CleanModelState(ModelState);

            if (ModelState.IsValid)
            {
                var user = await UserManager.FindAsync(model.UserName, model.Password);
                if (user != null)
                {
                    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
                    var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
                    AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = model.RememberMe }, identity);

                    if (Url.IsLocalUrl(returnUrl))
                    {
                        return Redirect(returnUrl);
                    }
                    else
                    {
                        return RedirectToAction("Index", "Home");
                    }
                }
                else
                {
                    model.ValidationSummary.AddMessage("Nome de usuário e/ou senha inválido(s).");
                }
            }
            else
            {

                var errors = ModelState.Values.SelectMany(v => v.Errors.Select(i => i.ErrorMessage)).ToList();
                model.ValidationSummary.AddMessages(errors);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }