Boa tarde,
Alguém já criou um módulo para cadastrar usuários e dados pessoais, lotações por onde o funcionário passou e as permissões do usuários?
Como o sistema só lê essas tabelas, estou pensando em desenvolver este módulo.
Acássio
Autor: Acássio Queiroz
1919 comentários
try
{
SegurancaUtil objSegUtil = new SegurancaUtil();
UnidadeAutenticadora unidadeAutenticadora = objSegUtil.obterInstanciaUnidadeAutenticadora(); // Basicamente a autenticacao é feita aqui. Criei uma nova UnidadeAutenticadora //para tratar a autenticacao via LDAP
usuarioAutenticado = unidadeAutenticadora.autenticarUsuario(strLogin, strSenha);
//Fiz esse tratamento abaixo para garantir que se é a primeria vez que o suário está //se logando, este seja incluido nas tabelas de usuario //verifica se o usuario já está na tabela UsuarioSistema, se nao estiver insere
UsuarioSistema usuario;
UsuarioSistemaFacade usuarioFacade = new UsuarioSistemaFacade();
PessoaFacade pessoaFacade = new PessoaFacade();
usuario = usuarioFacade.obterPelaChave(usuarioAutenticado.obterIdentificador().toString());
if(usuario == null){
usuario = new UsuarioSistema();
usuario.setIdentificador(usuarioAutenticado.obterIdentificador());
usuario.setNome(usuarioAutenticado.obterNome());
Grupo grupo = new Grupo();
grupo.setCodigo(1);//seta um grupo default
usuario.setGrupo(grupo);
usuarioFacade.incluir(usuario);
Pessoa pessoa = new Pessoa();
pessoa.setIdentificador(usuarioAutenticado.obterIdentificador());
pessoa.setGrupo(grupo);
pessoa.setNome(usuarioAutenticado.obterNome());
pessoaFacade.incluir(pessoa);
}
Permissao permissao = objSegUtil.obterInstanciaPermissao();
SegurancaWeb seguranca = objSegUtil.obterInstanciaSegurancaWeb(unidadeAutenticadora, usuarioAutenticado, permissao);
session.setAttribute(SegurancaWeb.CHAVE_SEGURANCAWEB, seguranca);
} 2 - Criei uma nova classe UnidadeAutenticadoraBT. O método autenticarUsuario está descrito abaixo public UsuarioAutenticado autenticarUsuario(String strLoginUsuario, String strSenhaUsuario) throws SegurancaException
{
UsuarioAutenticado usuarioBT = null; if (log.isDebugEnabled())
{
log.debug("autenticarUsuario(String strLoginUsuario = " + strLoginUsuario + ", String strSenhaUsuario) - inicio");
} // Verifica usuário sistema
try
{
UsuarioSistema usuario = new UsuarioSistema();
UsuarioLDAP usuarioLDAP;
AutenticadorLDAP aut = new AutenticadorLDAP();
if(aut.autenticar(strLoginUsuario, strSenhaUsuario)){
usuarioLDAP = aut.getUsuarioLDAP();
//obtem a matricula sem o "d" na frente
String matricula = usuarioLDAP.getMatricula().replace("d", "").toString().trim();
usuario.setIdentificador(Integer.parseInt(matricula));//será a matricula
usuario.setLogin(strLoginUsuario);
usuario.setNome(usuarioLDAP.getDisplayName());
usuarioBT = new br.gov.dataprev.seguranca.implementacaobt.UsuarioAutenticadoBT(usuario);
((br.gov.dataprev.seguranca.implementacaobt.UsuarioAutenticadoBT) usuarioBT).setUsuarioLDAP(usuarioLDAP);
}
else
{
if (log.isDebugEnabled())
{
log.debug("Senha não confere");
}
throw new SegurancaException("Senha não confere");
}
}
3 - Criei um novo UsuarioAutenticado com os seguintes atributos: // Identificação do usuário
private Integer intIdentificador = null;
private String strLogin = null;
private String strNome = null;
private Integer intIdentificadorGrupo = null;
private UsuarioLDAP usuarioLDAP; 4 - Alterei o arquivo SegImpl.properties para que as chaves aplicacao.seguranca.implementacao.unidadeautenticadora e
aplicacao.seguranca.implementacao.usuarioautenticado
apontem para as novas classes criadas. 5 - Criei uma biblioteca para facilitar a interação com o LDAP. As classes marcadas em vermelho acima fazem parte desta biblioteca. Se voce precisar posso enviar depois. Att Christian