Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta SQL para saber a cuales carpetas tiene acceso un usuario

Estas en el tema de Consulta SQL para saber a cuales carpetas tiene acceso un usuario en el foro de Mysql en Foros del Web. ¡Buenas, señores! Intentaré ir al punto. En una base de datos registro los permisos de acceso que los usuarios de mi sistema tienen para ver ...
  #1 (permalink)  
Antiguo 27/08/2012, 16:11
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 10 años
Puntos: 2
Pregunta Consulta SQL para saber a cuales carpetas tiene acceso un usuario

¡Buenas, señores!

Intentaré ir al punto. En una base de datos registro los permisos de acceso que los usuarios de mi sistema tienen para ver el contenido de carpetas en mi servidor web.

Mi problema es formular la consulta correcta para saber cuáles son las carpetas superiores (y sólo las superiores) a las que puede acceder un usuario determinado. Me he planteado la siguiente, es sólo para darles una idea:

SELECT `directorios`.`codigo`, `ubicacion`, `carpeta`
FROM `directorios` INNER JOIN `permisos`
WHERE (`directorios`.`codigo` = `permisos`.`cod_carpeta`)
AND (`cod_usuario` = '2')
AND ( CONCAT(`ubicacion`,'/',`carpeta`)
NOT IN ( SELECT `ubicacion` FROM `directorios` ) )
ORDER BY `ubicacion`, `carpeta` ASC

Por favor consideren como ejemplo tres tablas con sus atributos y registros (todos varchar):
___________________________________
|____________USUARIOS____________|
|-codigo-|----nombre----------|
|---1---| carlos---------------|
|---2---| juan----------------|

________________________________________________
|________________DIRECTORIOS_________________|
|--codigo--|-------ubicacion------|-carpeta-|
|----1----| carp1 ----------------| carp1---|
|----2----| carp1/carp1.1---------| carp1.1--|
|----3----| carp2 ----------------| carp2---|
|----4----| carp3 ----------------| carp3---|
|----5----| carp3/carp3.1---------| carp3.1--|

______________________________
|__________PERMISOS__________|
|-cod_usuario-|-cod_carpeta-|
|-----1------|-----2------|
|-----2------|-----1------|
|-----2------|-----5------|


Disculpen su formato, soy usuario nuevo.
En la tabla permisos se muestra relativamente que JUAN tiene acceso a la “carpeta1” y la “carpeta3.1”, lo que implica que debe tener acceso a TRES carpetas (carpeta1, carpeta1.1 y carpeta3.1). Pero con la sentencia SQL de arriba obtengo:

|-codigo-|------ubicacion--------|-carpeta--|
|---2----| carp1/carp1.1---------| carp1.1--|
|---5----| carp3/carp3.1---------| carp3.1--|

Nada útil para listar su contenido con PHP,porque obtengo las carpetas de nivel jerárquico inferior. Intenté suprimir el NOT en la sentencia y obtengo lo siguiente:

|-codigo-|------ubicacion--------|-carpeta--|
|---1----| carp1 ----------------| carp1----|

Con este resultado me es posible listar en una pagina el contenido de toda la carp1, pero recordemos que juan tambien tiene acceso a la carp3.3, cuyo registro no es devuelto aquí.

Bien, espero haber sido claro y dado suficientes herramientas para solucionar mi problema.

Si se preguntan para qué demonios necesito esa consulta, la razón es que intento implementar en un sitio web un visualizador de directorios (carpetas) con la funcionalidad básica de Windows Explorer y pretendo que el acceso a su contenido esté controlado bajo permisos de usuarios registrados en MySQL.

Invito a colaborar a quien le interese el proyecto, y agradezco a los lectores.



aRISE!

Última edición por mr_mojo_risin; 30/08/2012 a las 11:39

Etiquetas: campos, carpetas, concatenar, restrictivo, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:19.