Exemple #1
0
        public async Task <ISaida> Autenticar(AutenticarUsuarioEntrada entrada)
        {
            // Verifica se o e-mail e a senha do usuário foi informado.
            if (entrada.Invalido)
            {
                return(new Saida(false, entrada.Mensagens, null));
            }

            var usuario = await _usuarioRepositorio.ObterPorEmailSenha(entrada.Email, entrada.Senha);

            // Verifica se o usuário com o e-mail e a senha (hash) foi encontrado no banco
            this.NotificarSeNulo(usuario, UsuarioMensagem.Usuario_Nao_Encontrado_Por_Login_Senha);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se o usuário está ativo
            this.NotificarSeFalso(usuario.Ativo, UsuarioMensagem.Usuario_Inativo);

            return(this.Invalido
                ? new Saida(false, this.Mensagens, null)
                : new Saida(true, new[] { UsuarioMensagem.Usuario_Autenticado_Com_Sucesso }, new UsuarioSaida(usuario)));
        }
Exemple #2
0
        public async Task <IActionResult> Autenticar(
            [FromBody, SwaggerParameter("E-mail e senha do usuário.", Required = true)] AutenticarUsuarioViewModel model,
            [FromServices] ConfigurationHelper configHelper /*FromServices: resolvidos via mecanismo de injeção de dependências do ASP.NET Core*/)
        {
            var autenticarComando = new AutenticarUsuarioEntrada(model.Email, model.Senha);

            var comandoSaida = await _usuarioServico.Autenticar(autenticarComando);

            if (!comandoSaida.Sucesso)
            {
                return(new ApiResult(comandoSaida));
            }

            var usuario = (UsuarioSaida)comandoSaida.Retorno;

            var dataCriacaoToken   = DateTime.Now;
            var dataExpiracaoToken = dataCriacaoToken + TimeSpan.FromHours(configHelper.JwtTokenConfig.ExpiracaoEmHoras);

            return(CriarResponseTokenJwt(usuario, dataCriacaoToken, dataExpiracaoToken, configHelper));
        }
        public async Task <ISaida> Autenticar(AutenticarUsuarioEntrada autenticacaoEntrada)
        {
            // Verifica se o e-mail e a senha do usuário foi informado.
            if (!autenticacaoEntrada.Valido())
            {
                return(new Saida(false, autenticacaoEntrada.Mensagens, null));
            }

            var usuario = await _usuarioRepositorio.ObterPorEmailSenha(autenticacaoEntrada.Email, autenticacaoEntrada.Senha);

            // Verifica se o usuário com o e-mail e a senha (hash) foi encontrado no banco
            this.NotificarSeNulo(usuario, UsuarioMensagem.Usuario_Nao_Encontrado_Por_Login_Senha);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Verifica se o usuário está ativo
            this.NotificarSeFalso(usuario.Ativo, UsuarioMensagem.Usuario_Inativo);

            if (this.Invalido)
            {
                return(new Saida(false, this.Mensagens, null));
            }

            // Define as permissões de acesso (aqui, de forma estática, porém essas permissões poderiam ser obtidas do banco de dados).
            usuario.PermissoesAcesso = new[]
            {
                PermissaoAcesso.Usuarios,
                PermissaoAcesso.Contas,
                PermissaoAcesso.Periodos,
                PermissaoAcesso.Pessoas,
                PermissaoAcesso.Categorias,
                PermissaoAcesso.CartoesCredito,
                PermissaoAcesso.Agendamentos,
                PermissaoAcesso.Lancamentos
            };

            return(new Saida(true, new[] { UsuarioMensagem.Usuario_Autenticado_Com_Sucesso }, new UsuarioSaida(usuario)));
        }
Exemple #4
0
        public async Task <ISaida> Autenticar(
            [SwaggerParameter("E-mail do usuário.", Required = true)] string email,
            [SwaggerParameter("Senha do usuário.", Required = true)] string senha,
            [FromServices] JwtTokenConfig tokenConfig /*FromServices: resolvidos via mecanismo de injeção de dependências do ASP.NET Core*/)
        {
            var autenticarComando = new AutenticarUsuarioEntrada(email, senha);

            var comandoSaida = await _usuarioServico.Autenticar(autenticarComando);

            if (!comandoSaida.Sucesso)
            {
                return(comandoSaida);
            }

            var usuario = (UsuarioSaida)comandoSaida.Retorno;

            var dataCriacaoToken   = DateTime.Now;
            var dataExpiracaoToken = dataCriacaoToken + TimeSpan.FromSeconds(tokenConfig.ExpiracaoEmSegundos);

            return(CriarResponseTokenJwt(usuario, dataCriacaoToken, dataExpiracaoToken, tokenConfig));
        }