From: | Rubén da Silva <ruben(at)ozonomultimedia(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Obtener los roles de un usuario |
Date: | 2006-05-03 18:42:22 |
Message-ID: | 4458F98E.1040406@ozonomultimedia.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Lo sé, I know, esto ya lo he probado! :
-Se puede hacer comparando la lista de usuarios de cada rol con el oid
de mi usuario. (Obteniendo el array y haciendolo fuera de la BD) o
mediante un procedimiento almacenado.
-Se puede preguntar mediante pg_has_role() si un rol pertenece a otro
rol (grupo), pero implicaría varias consultas (tantas como grupos).
-Se que como administrador o con los permisos suficientes podría
obtenerse tambien de la tabla pg_authid.
Pero me gustaría obtener, dado el nombre de usuario (rol de login) y
estando conectado a la BD como éste (es decir, conectado como ese mismo
usuario sin permisos "admin") y a través de 1 sola consulta, la lista de
roles a los que pertenece tal usuario.
Hasta ahora he hecho:
"
SELECT groname, grosysid
FROM pg_group
WHERE grolist *= (SELECT usesysid FROM pg_user WHERE usename = 'xxxx')
"
Pero parece que el tipo de dato de grolist (oid[]) no funciona como un
array o ese operador que me he encontrado googleando no vale.
P.D. He mirado en codigo fuente del PGadmin3 y lo hacen obteniendo el
array y comparando cada OID de éste con la OID del usuario, por fuera,
en la propia aplicación.
¿No se podría hacer de una forma más sencilla?
Einstein creyó que "tiene que ser más sencillo que todo esto".
Un saludo
Rubén
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2006-05-03 19:52:34 | Re: Obtener los roles de un usuario |
Previous Message | Alvaro Herrera | 2006-05-03 18:13:34 | Re: MIgracion de datos |