Come implementare ACL per il repository?

1

Sto creando un dashboard. Ovviamente ho bisogno di recuperare alcuni dati. Il problema è che i dati mostrati sono basati sul ruolo dell'utente.

Ad esempio:

  • L'amministratore può vedere tutto e le colonne recuperate dal database sono x, yez.
  • Manager può vedere solo le righe per gli utenti che appartengono alla sua regione e le colonne che vengono recuperate sono solo x e y.
  • Il dipendente può vedere solo le righe che appartengono a lui e solo la colonna x.

Il restringimento è accidentale. Anche l'amministratore potrebbe visualizzare una colonna e il Gestore dieci.

Quindi in pratica il numero di righe e colonne differisce in base al ruolo.

Voglio evitare un singolo metodo nel repository con una serie di istruzioni if. Mi piacerebbe progettarlo in un modo che mi permetta di aggiungere ruoli in accordo con SRP e OCP.

Forse la catena di responsabilità è una buona soluzione? Creerei un sacco di oggetti Query con un metodo canHandle che controllerebbe il ruolo dell'utente?

Questa è la mia soluzione attuale: github

    
posta Kamil Latosinski 19.05.2018 - 00:04
fonte

0 risposte

Leggi altre domande sui tag