public async Task <IActionResult> Authenticate()
        {
            if (!ModelState.IsValid)
            {
                return(null);
            }

            string login    = this.LoginModel.Login;
            string password = this.LoginModel.Password;

            User authenticatedUser = this._context.AuthenticateUser(login, PasswordUtils.EncodePassword(password, ""));

            if (authenticatedUser != null)
            {
                await SetAuthenticatedUser(authenticatedUser.Login, false);

                string returnUrl = this.LoginModel.ReturnUrl;

                string controller = "Home";
                string action     = "Index";

                if (returnUrl != null && returnUrl.StartsWith("/"))
                {
                    string[] parts = returnUrl.Substring(1).Split('/');
                    controller = parts[0];

                    if (parts.Length >= 2)
                    {
                        action = parts[1];
                    }
                }

                return(this.RedirectToActionPermanent(action, controller));
            }

            return(View("Index", new LoginErrorViewModel("Usuário ou senha inválidos", null)));
        }