Ho la seguente configurazione: MVC> Servizi> Archivi. Ora voglio consentire agli utenti di aggiungere una nota a un documento. Solo gli utenti associati al documento (sia come proprietari o revisori) possono aggiungere note così nel mio NoteService faccio quanto segue per verificare che l'utente disponga dell'autorizzazione sul documento selezionato:Aggiunta di metodi alle classi POCO
public Note GetNewNote(int documentID)
{
if (!userHasAccess(Thread.CurrentPrincipal.Identity.Name))
throw new BusinessLogicException();
// Other stuff here...
}
La mia domanda è, dove dovrei definire il metodo userHasAccess? Non ha senso nel NoteService poiché sta controllando un documento. Potrei definirlo nel DocumentService ma poi NoteService avrà bisogno di accedere a ciò che sembra introdurre più accoppiamento.
Per me ha più senso definirlo sul documento POCO stesso e quindi chiamare document.userHasAccess (...). Sarebbe una buona pratica o un dominio POCO dovrebbe essere limitato a proprietà semplici? Sono preoccupato che questo sia davvero parte della validazione e che ponendo il metodo nel POCO sto separando la validazione tra Service e POCO.
Quello che sto cercando di garantire è che la mia applicazione sia facile da mantenere e da testare. Qualche suggerimento su come dovrei affrontarlo sarebbe molto apprezzato!
Che tipo di controllo non userHasAccess fare? Code Access Security potrebbe funzionare per te. – jgauffin
Controlla semplicemente che l'utente sia in Document.Owners o Document.Reviewers - sono molte le relazioni tra documento e persona. – James