示例#1
0
        public Usuario Autenticar(AutenticacaoTipo autenticacaoTipo, string nomeDeUsuario, string Senha)
        {
            IAutenticacaoAdService  adService;
            IAutenticacaoSapService sapService;
            Usuario usuario = null;

            switch (autenticacaoTipo)
            {
            case AutenticacaoTipo.Cms:
                adService = InjectorManager.GetInstance <IAutenticacaoAdService>();
                usuario   = adService.Autenticar(nomeDeUsuario, Senha);
                break;

            case AutenticacaoTipo.Mobile:
                sapService = InjectorManager.GetInstance <IAutenticacaoSapService>();
                usuario    = sapService.Autenticar(nomeDeUsuario, Senha);
                break;

            default:
                break;
            }

            return(usuario);
        }
示例#2
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var appNameHeaderItem = context.Request.Headers.FirstOrDefault(item => item.Key.Equals("App"));
            IAutenticacaoService Autenticacaoservice;
            Usuario          user             = null;
            AutenticacaoTipo TipoAutenticacao = 0;

            try
            {
                if (appNameHeaderItem.Value != null && appNameHeaderItem.Value.Length > 0)
                {
                    TipoAutenticacao    = RetornarTipoAutenticacao(appNameHeaderItem.Value[0]);
                    Autenticacaoservice = InjectorManager.GetInstance <IAutenticacaoService>();
                    user = Autenticacaoservice.Autenticar(TipoAutenticacao, context.UserName, context.Password);
                }
            }
            catch (BusinessServiceException exception)
            {
                context.SetError("invalid_grant", exception.Message);
                return;
            }
            catch
            {
                context.SetError("invalid_grant", "Um erro crítico ocorreu durante a autenticação. Contacte a área responsável");
                return;
            }


            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            var aceitouTermoDeUso = VerificarSeUsuarioJaAceitouTermoDeuso(user.NomeDeUsuario);

            identity.AddClaim(new Claim("NomeDeUsuario", user.NomeDeUsuario));
            identity.AddClaim(new Claim("NomeDePerfil", user.Nome));
            identity.AddClaim(new Claim("AceitouTermoDeUso", aceitouTermoDeUso.ToString()));

            if (user.PerfilAdministrador)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "Administrador"));
            }

            if (user.PerfilEditor)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "Editor"));
            }

            if (user.PerfilMobile)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "Mobile"));
            }

            if (TipoAutenticacao == AutenticacaoTipo.Cms)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "UsuarioCms"));
            }

            if (TipoAutenticacao == AutenticacaoTipo.Mobile)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, "UsuarioApp"));
            }

            context.Validated(identity);
        }