Tema: Privilegios.
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/04/2006, 16:41
Avatar de u_goldman
u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Cita:
Lo que pensaba era utilizar un campo por cada seccion en la tabla usuario. Este campo definiria los privilegios por cada sección. Ejemplo.
contenido_id | contenido_nombre
1 | Reportes

Permisos
Leer
Agregar
Editar
Eliminar

"Un tipo de dato puede tener muchos permisos"
"Un permiso corresponde a muchos tipos de dato"
"Un usuario puede tener muchos permisos"

Aquí se ve que la relación debería ser muchos a muchos.

Solución Propuesta:

Código:
tbl_contenido
contenido_id | contenido_nombre
       1                 Reporte
tbl_permiso
permiso_id  |  permiso_nombre
    1                   Agregar
    2                   Editar
    3                   Eliminar

tbl_usuario
usuario_id | usuario_nombre | ...|
   1                Yo Mismo

xref_contenido_permiso
contenido_id     |    permiso_id
      1                        2
      1                        1
      1                        3

xref_usuario_permiso
usuario_id    |   permiso_id
      1                  2

Function accionPermitida(strAccion, intTipoContenido, intUsuario)
   SQL = "SELECT a.permiso_id, b.permiso_id FROM tbl_permiso a INNER JOIN  " & _
   "tbl_usuario b ON a.permiso_nombre = '"&strAccion & "' AND b.usuario_id = "&intUsuario & " INNER JOIN xref_usuario_permiso c ON b.permiso_id = c.permiso_id AND c.usuario_id = b.usuario_id INNER JOIN xref_contenido_permiso d ON d.contenido_id = "&intTipoContenido& " AND d.permiso_id = b.permiso_id"
End Function

if accionPermitida("Editar", 1, session("usuario")) then
  'ejecuta
else
  'no tiene permisos
end if
Algo asi, je je, ya me dio flojera, el chiste es unir esas tablas y hacer el recordset, si hay registros el usuario tiene permisos, si no, pues no, regresas un booleano y listo...

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway