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

            var user = await _authenticationService.AuthenticateAsync(model.Username, model.Password);

            if (user != null)
            {
                // Ensure stages can be created
                await _stageClient.EnsureOwnerCreated(user.Username);

                // Login
                var claims = new List <Claim>();
                claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Username));
                claims.Add(new Claim(ClaimTypes.Name, user.Username));
                claims.Add(new Claim(ClaimTypes.Email, user.EmailAddress));

                var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

                var authenticationManager = Request.GetOwinContext().Authentication;
                authenticationManager.SignIn(identity);

                return(RedirectToLocal(returnUrl));
            }

            SetUiMessage(UiMessageTypes.Error, "The username or password is invalid.");

            return(RedirectToAction("Login", new { returnUrl = returnUrl }));
        }