On Wed, 2009-10-28 at 20:41 -0300, Alvaro Herrera wrote: > Carolina Román Salgado escribió: > > > > SELECT > > area.title, area.brief_description, area.main_picture > > FROM (SELECT DISTINCT ON (nid) * FROM node) n JOIN area USING (vid) > > INNER JOIN node_access na ON na.nid = n.nid > > WHERE (na.grant_view >= 1 > > AND ((na.gid = 0 AND na.realm = 'all') > > OR (na.gid = 2 AND na.realm = 'term_access') > > OR (na.gid = 6 AND na.realm = 'term_access')) > > ) > > ORDER BY title; > > No se ve muy bonito, ¿por qué no implementas el control de acceso > con una vista en vez de reescribir manualmente la consulta?
No había pensado en eso porque aún no sé nada de vistas. Necesito que mi código sea capaz de leer cierto formulario web donde el administrador define los permisos, para ser compatible con Drupal. Eso es lo que hace la función de Drupal db_rewrite_sql: obtener la info de permisos y traducir el resultado del formulario a esa cláusula WHERE. Así yo puedo escribir un código que respete los permisos del sistema sin realmente preocuparme de conocerlos: es suficiente usar db_query(db_rewrite_sql($my_query)) en vez de db_query($my_query) Los permisos dependen bastante del sistema que el admin escogió para implementarlos, así que pueden ser bastante impredecibles. ¿Puedo hacer algo así, dinámico, con una vista? Por otro lado, uno de los códigos que estoy escribiendo, un sistema de publicaciones, y que tiene este mismo problema será instalado además en otra web que corre sobre mysql. No he querido pensar en soluciones más complicadas porque recién estoy aprendiendo postgres y no tengo mucho tiempo para además aprender a hacer las cosas en mysql. -- Carolina Román Salgado http://nano-bio.ehu.es/~xavier/gallery Registered Linux user 40938 http://counter.li.org/ -- TIP 6: �Has buscado en los archivos de nuestra lista de correo? http://archives.postgresql.org/pgsql-es-ayuda