Dove aggiungere la logica di accesso basata sui ruoli negli aspetti del modello di dominio? Per il sistema di gestione della libreria

5

La più grande difficoltà che sto riscontrando è trovare dove collocare le responsabilità di ciascun oggetto da me identificato nel sistema (ad esempio nello spazio del problema). Sto postando una descrizione molto semplificata di una funzionalità nel sistema di gestione della libreria.

Usecase

  1. Come amministratore, posso aggiungere libri all'inventario o modificare gli "stati" del libro a qualsiasi valore consentito.
  2. Come staff, posso cambiare "stati" del libro solo in "Restituito" o "In prestito".
  3. Come cliente, posso visualizzare tutti i libri con stati "Restituito" o "Prestito".
  4. Il libro può essere dei seguenti stati "Restituito", "Prelevato", "Rimosso",
  5. Come amministratore, posso concedere o revocare l'accesso allo staff per aggiungere un libro a qualsiasi membro dello staff

Enti

  1. Utente
  2. Repository utenti
  3. Libro
  4. Repository libri
  5. Libreria
  6. Permission

Associazioni

La Biblioteca detiene il Repository utente e il Repository libri in una relazione uno a uno, il Repository ha le entità corrispondenti in una relazione uno a molti.

Comportamento

  1. Repo utente:

    • Gets list of all user/ a user of interest respective to problem domain.
    • Saves User entity to external system(Database or Cloud)
  2. Book Repo:

    • Gets list of all Book/ a book of interest respective to use case.
    • Saves Book entity to external system(Database or Cloud)
    • Add a book

Domanda

  1. Per gli Usecases 3 e 5, dove aggiungere la logica basata sull'accesso. Nel nostro caso, decidere se l'oggetto utente (Solo amministratore) ha accesso per concedere / revocare l'accesso per aggiungere libri. E l'elenco dei libri da restituire in base al ruolo utente.

NOTA: voglio raggiungere

  • coesione tra entità
  • unit test ogni modulo con copertura dell'80-90%
  • Incase del livello applicazione, come si assicura che i membri del team attuali / nuovi non espongano direttamente gli oggetti del dominio
posta Mani 04.12.2017 - 01:44
fonte

1 risposta

1

Penso che il modo standard sia ignorare tutte queste regole di autenticazione durante la creazione della logica di business e poi semplicemente aggiungere un sistema di autenticazione standard basato sui ruoli all'applicazione successiva.

Ad esempio, se l'app è una pagina web, si impedirebbe semplicemente agli utenti non dello staff di accedere alla pagina "cambia stato del libro"

    
risposta data 04.12.2017 - 15:29
fonte