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

Responder a