Ir para o conteúdo

 Voltar a Banco de Tal...
Tela cheia

Cadastro de usuários e dados pessoais, lotações e permissoes

20 de Julho de 2009, 15:50 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 25 vezes

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

  • F24dd96a3b3343b99b684fc44d2e5b71?only path=false&size=50&d=404Luciano Dias(usuário não autenticado)
    20 de Julho de 2009, 16:20

     

    Oi Acássio,

    O módulo ao qual você se referiu será muito bem-vindo ! Eu me coloco à disposição para trabalharmos juntos nele.

    Eu tenho uma sugestão: dividir esse módulo em dois subprojetos do Banco de Talentos (para serem utilizados de acordo com a necessidade de cada entidade):

    1) Cadastramento de usuários e permissões;

    2) Cadastramento de pessoas e dados básicos.

    Um abraço,

    Luciano.

    • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
      29 de Julho de 2009, 18:16

       

      Olá Luciano.

      Em breve começarei uma série de alterações no Banco de Talentos como parte do processo de internalização do mesmo na empresa onde trabalho. Uma das alterações que precisaremos fazer é em relação às permissões de acesso e login. Por exemplo, estamos pretendendo possibilitar uma validação de login via LDAP e criar um mecanismo de autorização o mais genérico possível, talvez baseado no jaas. 

      Vocês já começaram a mexer em alguma coisa? Como poderia interagir com vocês para trocarmos idéias?

       

      Abraço,

       Christian

      • F24dd96a3b3343b99b684fc44d2e5b71?only path=false&size=50&d=404Luciano Dias(usuário não autenticado)
        29 de Julho de 2009, 19:26

         

        Oi Christian,

        Estamos à disposição para ajudar no que for possível. Eu sugiro que utilizemos o fórum da comunidade para nossa troca de idéias, visto que outros poderão se beneficiar também.

        Com relação à autenticaçao e à autorização (permissão de acesso), o Banco de Talentos está preparado para utilizar o mecanismo que você quiser através da implementação de interfaces: a versão que é disponibilizada utiliza o banco de dados para estas finalidades, mas no nosso ambiente de produção utilizamos uma implementação da autenticação que consulta uma base LDAP.

        Onde eu vejo necessidade de uma redefinição com o objetivo de deixar o sistema mais flexível para atender às diversas necessidades é no cadastro de dados pessoais e lotações.

        Quando quiser tratar um desses assuntos, abra um tópico no fórum para discutirmos e ouvirmos os outros membros.

        Um abraço,

        Luciano.

  • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
    29 de Julho de 2009, 21:16

     

    Luciano Christian e demais,

    Talvez essa não seja a trilha mais adequada, mas gostaria de aproveitar suas colocações para fazer uma proposta. Acredito que seja de total interesse da comunidade conhecer as futuras alterações realizadas por seus membros no código-fonte da ferramenta. Assim, gostaria de sugerir à Coordenação a criação de uma área específica no nosso SVN que pudesse hospedar contribuições como a do Christian, que são customizações mas podem ser muito interessantes para os outros membros.

    Talvez possamos criar um diretório específico no SVN com permissões mais "abertas" para esse tipo de contribuição. O que acham da ideia?

    • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
      30 de Julho de 2009, 16:09

       

      Ok Luciano, darei uma olhada mais detalhada nessa parte de segurança. Na verdade estou começando a analisar todo o código agora e entendendo aos poucos. Na questão das informações pessoais, pelo que entendi estes dados não estão no banco pois partiu-se do princípio que estas já estarão em algum outro bd de rh da empresa e, para evitar duplicação, optou-se por trazê-las através de consultas neste banco externo. Foi isso mesmo? 

      Eduardo, achei a idéia bem interessante. Participo da comunidade de desenvolvimento do Expresso Livre, que é uma solução de workgroup + mail com a participação de vários órgãos governamentais e alguns privados. Já tivemos várias reuniões e discussões para organizar nosso processo de desenvolvimento com o objetivo final de termos apenas uma única distribuição do produto. Ou seja, o objetivo é que todos trabalhem no mesmo ramo trunk e branches e dessa forma evitar a criação de forks. Se isso não for possível o trabalho através de patches também dá resultado. Em qualquer caso seria interessante registrarmos nossas necessidades, por exemplo no track da comunidade, para que todos saibam o que está rolando. Poderíamos também marcar uma reunião no chat aqui da comunidade. O que acham?

      • F24dd96a3b3343b99b684fc44d2e5b71?only path=false&size=50&d=404Luciano Dias(usuário não autenticado)
        30 de Julho de 2009, 18:41

         

        Oi Christian,

        É isso mesmo. Só que os dados pessoais que são exibidos estão codificados na aplicação. O ideal seria que isso fosse configurado pela aplicação deixando essa parte também flexível e configurável a critério do usuário, dependendo das necessidades de cada órgão/empresa.

        Quanto à segurança, você especifica num arquivo de configuração (propriedades) qual a implementação você quer utilizar (ver modelo de classes na pasta documentação -> segurança). Nós utilizamos implementações diferentes das que estão disponíveis (classes de segurança *BT.java). Oportunamente poderei disponibilizar a implementação da autenticação utilizando LDAP se for de interesse.

        Eu concordo que devemos trabalhar para ter, sempre que possível, somente uma distribuíção do Banco de Talentos com todas as necessidades e customizações incorporadas no trunk.

        Eu só acho que o controle de acesso e a autenticação não deveriam fazer parte da distribuição do Banco de Talentos, visto que são funcionalidades complementares à execução da aplicação, mas não necessárias. Além disso, cada órgão/empresa pode já ter uma solução e desejar somente fazer com que o Banco de Talentos a utilize. E é nisso que deveríamos focar: se as interfaces atuais no sistema não forem flexíveis o suficiente para acoplar determinada solução, estudar como poderíamos integrá-las.

        Mas como nem todos dispõem de uma solução de autenticação e autorização, então, sim, poderíamos disponibilizar uma para atender esses casos.

        O mesmo vale para o cadastro de pessoas, que pode ser fechado (vindo de um sistema de RH), semi-aberto (o gestor do sistema deve previamente cadastrar as pessoas) ou aberto (a pessoa entra no sistema com alguns dados básicos, recebe uma senha e pode daí em diante preencher seus talentos). Hoje o Banco de Talentos permite a primeira alternativa, mas nós temos uma pequena aplicação separada que permite o cadastramento de pessoas (semi-aberto). Esta aplicação poderia ser um subprojeto do Banco de Talentos.

        Por último concordo que nós temos que saber quais funcionalidades os outros membros precisam, até mesmo para definir prioridades de desenvolvimento (na medida do possível) das próximas releases. Para isso, nada melhor do que utilizar os recursos tecnológicos que estão à nossa disposição.

        Um abraço,

        Luciano.

    • F24dd96a3b3343b99b684fc44d2e5b71?only path=false&size=50&d=404Luciano Dias(usuário não autenticado)
      30 de Julho de 2009, 18:16

       

      Oi Eduardo,

      Sua idéia é muito interessante e seria muito bom se ela pudesse ser implementada.

      Eu não sei se já funciona assim, mas o ideal seria permitir que uma comunidade pudesse "hospedar" subprojetos e esses teriam características próprias quanto às permissões no SVN (os fóruns poderiam ser os mesmos dos projetos principais).

      Por exemplo:

      - Comunidade BANCO DE TALENTOS

      - Subprojeto1: Controle de acesso

      - Subprojeto 2: Autenticação

      Um dia, um subprojeto desses poderá até se tornar independente do projeto pai, como já acontece com os projetos da Apache.

      A comunidade Banco de Talentos (bancotalentos) tem uma árvore no SVN com permissões específicas, mas o subprojeto controle de acesso (bancotalentos.controleacesso) tem uma outra árvore no SVN com outras permissões...

      O que vocês acham ?

      Um abraço,

      Luciano.

      • 12cf2da8b1a1753868c7e20816b7dab5?only path=false&size=50&d=404Eduardo Santos(usuário não autenticado)
        30 de Julho de 2009, 18:57

         

        Luciano,

        Achei a sua ideia ótima e a atual implementação do SVN permite que as coisas funcionem dessa forma. Podemos criar "pastas" no SVN e cada uma dessas pastas terá uma permissão específica. A única coisa que precisamos fazer para isso acontecer é você me dizer como deseja organizar o SVN e eu providencio isso pra você.

        Acredito que seria uma forma bastante interessante de estimular a comunidade a interagir. Parabéns pela abertura e pelas ótimas ideias.

      • 35b58503ebd02d1938737f2cbbe7ec21?only path=false&size=50&d=404José Lúcio da Silva Tavares(usuário não autenticado)
        19 de Outubro de 2009, 12:07

         

        Luciano,

         Será que não seria possível disponibilizar, como foi feita a autenticação via ldap, pois acredito que com está solução, a maioria de nós resolveríamos o problema da autenticação.

         

        Um abraço.

        José Lúcio Tavares

        • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
          21 de Outubro de 2009, 12:37

           

          José, mexi nisso recentemente e vou colocar aqui o que precisei fazer:

           

           1- Alterei a classe AutenticacaoSequencia fazendo

          // Autenticar Usuario
                      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

           

           

           

          • F24dd96a3b3343b99b684fc44d2e5b71?only path=false&size=50&d=404Luciano Dias(usuário não autenticado)
            21 de Outubro de 2009, 16:14

             

            Oi Christian,

            O código que você postou é praticamente o mesmo que utilizamos no nosso ambiente de produção com pequenas alterações (ver abaixo). Se você puder, disponibilize o código com essas alterações na pasta Contribuições. Quando fizer isso, avise no fórum de desenvolvimento para que façamos as devidas adequações no código, em comum acordo, para deixá-lo o mais genérico possível e disponibilizá-lo na distribuição do Banco de Talentos.

            1) AutenticacaoSequencia:

            O código com a criação do usuário nas tabelas do sistema (no caso do primeiro login) é feito pela unidade autenticadora do Banco de Talentos. Dessa forma a AutenticacaoSequencia não precisou ser alterada.

            2) UnidadeAutenticadoraBT:

            Nós criamos uma implementação para a autenticação via LDAP chamada UnidadeAutenticadoraLDAP. No mais o código é bem parecido com aquele que você postou.

            3) UsuarioAutenticado:

            Nossa implementação tem características próprias, mas não faz referência ao LDAP: a UnidadeAutenticadoraLDAP é que obtém os atributos necessários do objeto LDAP e seta as respectivas propriedades do UsuarioAutenticado.

            4 e 5) Fizemos as mesmas alterações.

          • 905b0b74baff40c5312732f2ae668ec6?only path=false&size=50&d=404Luan Melo(usuário não autenticado)
            17 de Maio de 2010, 11:09

             

            Olá Christian,

            Será que você poderia disponibilizar ou me enviar essa biblioteca que você criou para a interação com o LDAP.

            Estou fazendo essa modificação aqui no momento, e quero testar essa solução que você postou.

            Obrigado, Luan.

            • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
              17 de Maio de 2010, 11:54

               

              Luan, coloquei em Arquivos -> Contribuições -> LDAP a lib e o JavaDoc.

               

              Att. Christian

              • 905b0b74baff40c5312732f2ae668ec6?only path=false&size=50&d=404Luan Melo(usuário não autenticado)
                24 de Maio de 2010, 15:15

                 

                Christian, obrigado.

                Devo fazer mais alguma configuração na aplicação, porque quando mando gerar o war dá erro.

                E onde que configuro as configurações do servidor LDAP?

                Vocês não teem um mini-tutorial de como fazer o login via ldap? rsrs

                estou me mordendo aki =(

                Atc.

                • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
                  25 de Maio de 2010, 19:20

                   

                  Luan, nesse mesmo tópico eu descrevi +- onde tivemos que mexer pra trocar a forma de autenticacao no BT.

                  Será que isso já não te resolve?

                   

                  • 905b0b74baff40c5312732f2ae668ec6?only path=false&size=50&d=404Luan Melo(usuário não autenticado)
                    26 de Maio de 2010, 10:14

                     

                    Christian, fiz exatamente essas alterações que estão neste tópico.

                    Só que como eu disse, quando vou gerar o .war dá erro na hora de compilar essas classes, essa biblioteca foi compilada no Java 5?

                    Poderia disponibilizar o .java dessas classes?

                    E não precisa passar os parâmetros das configurações do LDAP?

                    endereço, porta, dominio e etc...

                    Obrigado pela atenção.

                    • 5027e96c2c456119c052b9d4a37310c8?only path=false&size=50&d=404Christian Cleber Masdeval Braz(usuário não autenticado)
                      26 de Maio de 2010, 10:33

                       

                       Foi compilado no Java 5 sim. Mas o próprio BT também está no Java 5.

                        As classes já possuem métodos para fazer todas as configurações que vc precisará. Dê uma olhada no Java Doc para mais informações.

                       

                        Att Christian

                       

                      • 2dbd8518c9fb54b138ff7d2b9cc0880a?only path=false&size=50&d=404Cezar Fernandes Candreva(usuário não autenticado)
                        8 de Setembro de 2010, 11:05

                         

                        Caros, bom dia.

                        Já existe alguma versão do BT com as telas de cadastro? Ou a proposta de vcs ainda não avançou?

                        Grato

                      • 77546189b8dbc4db3d7f1a5c182e44fd?only path=false&size=50&d=404Gilgleidson Souza(usuário não autenticado)
                        16 de Julho de 2013, 17:59

                         

                        Christian,

                        baixei o sistema e instalei no Tomcat e já fiz algumas outras alterações.

                        Ainda não rodei o script do banco, no nosso caso oracle, mas gostaria de saber como faço para autenticar via LDAP.

                        Tenho que recompilar o sistema? Para isso, tenho que ter os fontes, correto?

                        Em vez disso, não existe um XML onde eu possa passar as configurações do LDAP para que eu possa autenticar no sistema sem ter que recompilá-lo?

                        Obrigado,

                        Gilgleidson

Essa comunidade não possui posts nesse blog