Estoy creando un sistema de menús en PHP y MySQL. Tendré varios menús diferentes y cada menú tendrá un conjunto de elementos de menú conectados.
En el sitio, también tengo diferentes permisos de usuario, algunos usuarios pueden ver todos los elementos del menú y algunos elementos están ocultos para algunos usuarios. Tengo curiosidad por saber cómo podría manejar los permisos de una manera limpia que permita agregar fácilmente más tipos de usuarios en el futuro.
Lo que tengo hasta ahora es algo como esto:
-------------------
|Menus
-------------------
|id| |display name|
-------------------
----------------------------------------------------------
|Menu items
----------------------------------------------------------
|id| |menu_id| |label| |link| |parent| |sort| |permission|
----------------------------------------------------------
Estoy pensando que la permissioncolumna podría ser una cadena separada por comas que puedo comparar con la identificación de permiso del usuario actual. También podría ser una referencia a alguna otra tabla que defina todas las combinaciones posibles de los permisos existentes actualmente.
Una solución también podría ser simplemente almacenar múltiples elementos de menú donde la única diferencia es el permiso, aunque esto conduciría a un almacenamiento duplicado y quizás una molestia de administrar.
Me encantaría escuchar algunas ideas sobre cómo estructurar esto y lo que podría considerarse limpio, dinámico y horrible.
Gracias.
