Sto creando un bot IRC in PHP. E sono giunto al punto in cui ho bisogno di determinare in che modo le autorizzazioni / gli accessi degli utenti verrebbero visualizzati nel database (e nell'applicazione in generale).
Ecco i requisiti:
- Esistono autorizzazioni globali e locali, globali per tutti i canali, mentre locali sono specifici del canale.
- Ci sono permessi come "root", "bot_admin" "glob_op" "op on #channel", in questo esempio, ognuno è più debole dell'ultimo (root è il più strong, il che significa che nessuno può intraprendere azioni contro root) .
- Non ho completamente deciso esattamente quante autorizzazioni ci sono, e il bot sarà estensibile, quindi ci deve essere un'opzione di espansione.
Alcuni approcci che avevo in mente:
- Assegna a ciascun livello di autorizzazione un numero (1, 2, 4, 8, 16) e aggiungili insieme per formare il livello di accesso di un utente specifico (anche aggiungendo tutti i numeri fino a
n-1
, sarebbero comunque inferiori din
). Per quanto riguarda l'espansione, potrei lasciare degli spazi (1, 16, 256, ecc.) E riempirla in seguito. Non penso che sia molto buono, in quanto sarebbe difficile da mantenere e leggere in seguito, anche se uso costanti per renderlo più leggibile. - Avere ciascuna autorizzazione nella propria colonna booleana. Sembra un po 'sciocco, e non esiste un modo semplice per determinare le relazioni di potere tra ogni ruolo.
Quindi cosa ne dici? Ho un approccio migliore che posso prendere?