Sfondo
Devo implementare una whitelist di URL per limitare il numero di pagine su cui può essere distribuito un widget javascript.
Il dominio richiedente è già limitato per un account, ma ora voglio limitare ogni account a un elenco di un massimo di 7 percorsi.
Ci sono un paio di livelli che posso pensare / combinare, ma nessuno di loro sembra "corretto"
-
UI
-
DATABASE
-
MODELLO
-
CONTROLLER
L'interfaccia utente sembra la più semplice, il token CSRF significa che solo questo modulo può postare nel modulo di gestione, se ha solo 7 campi, può solo pubblicare un massimo di 7 percorsi. Ma so che l'interfaccia utente dovrebbe presentare i dati persistenti ed eseguire alcune convalide di base prima di inviarli al back-end, non imporre la logica aziendale di esso.
Il database, Un RDBMS (per quanto ne so) può davvero far rispettare questo se la tabella account ha 7 campi whitelist, o una singola tabella account_whitelist con una chiave esterna di account id e 7 campi whitelist. Non penso posso limitare un numero massimo di occorrenze della chiave esterna, quindi in modo efficace una tabella di 2 colonne (con ulteriori metadati di percorso se necessario) che ha fino a 7 righe per account sembra fuori della domanda.
Il modello. È abbastanza facile creare 7 attributi del modello come null / impostarli su una stringa, ma non sono venduto se questo impone realmente la logica di business ovunque, se qualcosa di "enforcement" è un effetto collaterale dell'ORM. Come far rispettare non più di 2 bambini in un negozio in qualsiasi momento, riducendo semplicemente lo spazio disponibile.
Il controller, potrei respingere qualsiasi richiesta per mantenere più di 7 informazioni. Anche in questo caso sembra un approccio più basato sull'applicazione rispetto alle altre opzioni.
O tutto quanto sopra, ma questo sembra eccessivo e meno mantenibile se il numero 7 cambia in alto o in basso nel tempo.