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