Correto Renato!

A senha que envio não é criptografada, pois na tela de cadastro que fiz não 
criptografo a mesma.
Na verdade, a tabela de usuarios que fiz é para fins de obter informações mais 
detalhadas do mesmo. 
O login do sistema nao faço pela tabela e sim pela role. se a role existe e o 
usuario digitar a senha correta, ele loga no banco e terá acesso as tabelas de 
acordo com as permissões concedidas à role. Neste caso o próprio banco vai 
administrar essa questão das  permissões aos usuarios logados.
Na questão de criptografia da senha,... o banco faz a criptografia automatica 
quando crio/modifico a role e também no login.

Att. Rieg




  Olá João Paulo.. tudo bem?
  no meu caso, a senha já está criptografada em MD5.. se eu fizer como vc fez, 
eu penso que a senha será criptografada 2 vezes..
  Nos eu caso NEW.passwd não esta criptografado né? ou seja.. é um clear 
password. correto?


  valeu!


  Renato



  Em 14 de novembro de 2012 16:06, Joao Paulo Rieg <jpaulor...@yahoo.com.br> 
escreveu:

    Olá pessoal..


      Tenho uma tabela de usuários onde armazeno o usuário e senha de acesso do 
sistema. A senha já está criptografada com MD5.


      Eu preciso replicar esses usuários para a tabela nativa de usuários do 
PostgreSQL através do comando create role e manter a mesma senha. Já tentei o 
comando abaixo, mas sem sucesso:


      Trigger Function:
      DECLARE
      v_senha varchar();
      BEGIN 
      v_senha := 'md5' || (new.usu_senha);
        execute 'CREATE ROLE ' || new.usu_usuario || ' NOINHERIT LOGIN 
UNENCRYPTED PASSWORD ' || quote_literal(v_senha) ;
        return new;
      END;


      Alguma sugestão?


      Obrigado,
      Renato


      Tenho uma trigger que está assim:

      CREATE OR REPLACE FUNCTION gravar_role()
        RETURNS trigger AS
      $BODY$
      DECLARE 
       SQL TEXT;
       BEGIN
        IF TG_OP = 'INSERT' THEN
         SQL = 'CREATE ROLE '||NEW.usuario||' LOGIN PASSWORD 
'||quote_literal(NEW.passwd)||' INHERIT; ';
         EXECUTE SQL;
         RETURN NEW;
        ELSEIF TG_OP = 'UPDATE' THEN
         SQL = 'ALTER ROLE '||NEW.usuario||' PASSWORD 
'||quote_literal(NEW.passwd)||'; ';
         EXECUTE SQL;
         RETURN NEW;
        ELSEIF TG_OP = 'DELETE' THEN
         SQL = 'DROP ROLE '||OLD.usuario||'; ';
         EXECUTE SQL;
         RETURN OLD;
        END IF;
       END;
      $BODY$
        LANGUAGE plpgsql VOLATILE;

      CREATE TRIGGER gravar_role
        BEFORE INSERT OR UPDATE OR DELETE
        ON sis_user
        FOR EACH ROW
        EXECUTE PROCEDURE gravar_role();


      A unica preocupação que tive que fazer na aplicação é de não permitir 
modificar o nome do usuario.
      Esta trigger modifica a senha e também remove a role caso seja removido 
na tabela.

      Att. Rieg


    _______________________________________________
    pgbr-geral mailing list
    pgbr-geral@listas.postgresql.org.br
    https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral






------------------------------------------------------------------------------


  _______________________________________________
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a