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