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