Obtener los roles de un usuario

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

Responses

Browse pgsql-es-ayuda by date

  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