Sto creando un sistema di menu in PHP e MySQL. Avrò diversi menu e ogni menu avrà una serie di voci di menu ad esso collegate.
Sul sito, ho anche diverse autorizzazioni utente, alcuni utenti possono vedere tutte le voci di menu e alcuni elementi sono nascosti da alcuni utenti. Sono curioso di sapere come gestire le autorizzazioni in modo pulito, in modo da poter aggiungere facilmente altri tipi di utenti in futuro.
Quello che ho finora è qualcosa del genere:
-------------------
|Menus
-------------------
|id| |display name|
-------------------
----------------------------------------------------------
|Menu items
----------------------------------------------------------
|id| |menu_id| |label| |link| |parent| |sort| |permission|
----------------------------------------------------------
Penso che la colonna permission
possa essere una stringa separata da virgole che posso confrontare con l'ID di autorizzazione dell'utente corrente. Potrebbe anche essere un riferimento ad un'altra tabella che definisce tutte le possibili combinazioni delle autorizzazioni attualmente esistenti.
Una soluzione potrebbe anche consistere semplicemente nel memorizzare più voci di menu dove l'unica differenza è il permesso, sebbene ciò porterebbe a una duplicazione dell'archiviazione e forse un dolore da amministrare.
Mi piacerebbe sentire qualche idea su come strutturare questo e cosa potrebbe essere considerato pulito, dinamico e schifoso.
Grazie.