public Token Autenticar(string usuario, string senha, ConfiguracoesToken configsToken, AssinaturaToken assinatura) { var usuarioBanco = ValidarUsuario(usuario, senha); if (usuarioBanco == null) { throw new RegraNegocioException(MensagensErro.UsuarioNaoLocalizado); } var dominio = new UsuarioDm( usuarioBanco.Id, usuarioBanco.Usuario, string.Empty, usuarioBanco.DataCriacao, usuarioBanco.Ativo, usuarioBanco.DataCadastroSenha, usuarioBanco.DiasRenovacao, null, null ); if (dominio.PossuiSenhaExpirada()) { throw new RegraNegocioException(MensagensErro.UsuarioSenhaExpirada); } if (!dominio.Ativo) { throw new RegraNegocioException(MensagensErro.UsuarioBloqueado); } ClaimsIdentity identity = new ClaimsIdentity( new[] { new Claim("Usuario", usuarioBanco.Id.ToString()), new Claim("Pessoa", usuarioBanco.Pessoa.Id.ToString()), new Claim("Grupo", usuarioBanco.Grupo.Id.ToString()), } ); DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromMinutes(configsToken.DuracaoMinutos); var handler = new JwtSecurityTokenHandler(); var dadosToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = configsToken.Originador, SigningCredentials = assinatura.credenciais, Subject = identity, NotBefore = dataCriacao, Expires = dataExpiracao }); var token = handler.WriteToken(dadosToken); return(new Token(token, dataCriacao, dataExpiracao)); }
public RespostaApi <Token> Autenticar(string Usuario, string Senha, [FromServices] ConfiguracoesToken configsToken, [FromServices] AssinaturaToken assinatura) => RespostaPadrao(_servico.Autenticar(Usuario, Senha, configsToken, assinatura));