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))); }
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))); }
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)); }