Beispiel #1
0
        public ActionResult WindowsLogin(string returnUrl = "/", string AppUrl = "", string AppId = "")
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized));
            }

            if (IsAuthenticatedByFormsAuthentication())
            {
                return(Redirect(GetAppUrlRedirect(AppId, AppUrl, returnUrl, User.Identity.Name, Request.GetUserToken())));
            }

            Usuario user = unit.UsuarioRepository.AllInclude(x => x.StatusUsuario).SingleOrDefault(x => x.Login.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));

            if (null == user || user.LogOut || !user.StatusUsuario.Codigo.Equals("A", StringComparison.InvariantCultureIgnoreCase))
            {
                FormsAuthentication.SignOut();
                Session.Abandon();
                return(RedirectToRoute("Default", new { action = "WebLogin", returnUrl = returnUrl, AppUrl = AppUrl, AppId = AppId }));
            }

            var token = tokenManager.GerarToken(user.Id, Request);

            HttpContext.Response.SetAuthCookie(User.Identity.Name, true, token.Hash);

            LogOutUser(false, user.Login);

            ListAlert.Add(new Alert("Autenticado via Domínio", AlertType.Info));

            return(Redirect(GetAppUrlRedirect(AppId, AppUrl, returnUrl, User.Identity.Name, token.Hash)));
        }
Beispiel #2
0
        public ActionResult Index()
        {
            ViewBag.Title = "Home Page";
            var user = User.Identity;

            ListAlert.Add(new Alert("Entrei na Home/Index", AlertType.Info));
            return(View());
        }
Beispiel #3
0
        private string GetAppUrlRedirect(string appId, string appUrl, string returnUrl, string login, string userTokenHash)
        {
            if (string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(appUrl))
            {
                return(returnUrl.Contains("conta/login") ? "/" : returnUrl);
            }

            Uri appUri;

            Uri.TryCreate(appUrl, UriKind.Absolute, out appUri);

            if (appUri == null || !appUri.IsAbsoluteUri)
            {
                return(returnUrl);
            }


            var aplicacao = unit.AplicacaoRepository.GetByAppId(appId);

            if (aplicacao != null)
            {
                // a url informada está cadatrada para a aplicação?
                if (aplicacao.AplicacaoUrls.Any(x => x.Url.Equals(appUri.Authority, StringComparison.InvariantCultureIgnoreCase)))
                {
                    //Verificar a permissão do usuário
                    var  user         = unit.UsuarioRepository.GetByLogin(login);
                    bool temPermissao = unit.UsuarioAplicacaoRepository.VerificarPermissaoUser(login, appId);
                    if (temPermissao)
                    {
                        tokenManager.AddAppUserToken(aplicacao.AppId, userTokenHash);
                        // Criptografar User Token
                        Criptografia cripto = new Criptografia();
                        cripto.Key = aplicacao.AppKey;
                        var userTokenEncripted = cripto.Encrypt(userTokenHash);

                        return(GetReturnUrlAplicacao(appUri.OriginalString, userTokenEncripted));
                    }
                    else
                    {
                        ListAlert.Add(new Alert(string.Format("Você não tem acesso para a aplicação '{0}'", aplicacao.Nome), AlertType.Error));
                    }
                }
                else
                {
                    ListAlert.Add(new Alert(string.Format("Url informada para a aplicação '{0}' não foi encontrada no banco de dados", aplicacao.Nome), AlertType.Error));
                }
            }
            else
            {
                ListAlert.Add(new Alert(string.Format("Aplicação '{0}' não encontrada", aplicacao.Nome), AlertType.Error));
            }

            return(returnUrl);
        }