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 bool IncluirUsuario(UsuarioInclusaoDto usuario) { if (usuario.Senha != usuario.ConfirmacaoSenha) { throw new ArgumentException(MensagensErro.UsuarioFalhaConfirmacaoSenha); } DateTime dataAtual = DateTime.Now; GrupoDto grupo = _grupoServico.PesquisarGrupoPorId(usuario.IdGrupo); if (grupo == null) { throw new ArgumentException(MensagensErro.UsuarioGrupoNaoEncontrado); } var grupoDominio = new GrupoDm(grupo.Id, grupo.Nome, grupo.Descricao, grupo.Pai); grupoDominio.DefinirMensagens(_mensagens); var pessoa = _pessoaServico.PesquisarPessoaPorId(usuario.IdPessoa); if (pessoa == null) { throw new ArgumentException(MensagensErro.UsuarioPessoaNaoEncontrada); } var pessoaDominio = new PessoaDm(pessoa.Id, pessoa.Nome, pessoa.Cpf, pessoa.Email, pessoa.Telefone); pessoaDominio.DefinirMensagens(_mensagens); var dominio = new UsuarioDm( 0, usuario.Usuario, usuario.Senha, dataAtual, true, dataAtual, usuario.DiasRenovacao, grupoDominio, pessoaDominio ); dominio.ValidarDados(); if (_mensagens.PossuiFalhasValidacao()) { throw new RegraNegocioException(MensagensErro.RegraNegocioErroValidacao); } var usuarioBanco = new UsuarioDpo( dominio.Id, dominio.Usuario, dominio.Senha.ValorCriptografado, dataAtual, dataAtual, dominio.DiasRenovacao, dominio.Ativo, dominio.Grupo.Id, dominio.Pessoa.Id ); var sucessoInsercao = _UsuarioRepositorio.InserirUsuario(usuarioBanco); if (!sucessoInsercao) { _mensagens.AdicionarMensagem(TipoMensagem.Erro, MensagensErro.UsuarioFalhaInclusao); } _mensagens.AdicionarMensagem(MensagensErro.UsuarioSucessoInclusao); return(sucessoInsercao); }