Molte applicazioni Web a cui ho contribuito (principalmente ASP.NET), devono gestire più tipi di utenti diversi.Gestione di diversi tipi di utente in un'applicazione
Supponiamo di avere un portale scolastico, che sia gli alunni che gli insegnanti utilizzano quotidianamente. Nella prima pagina dell'applicazione gli utenti incontrano quasi la stessa GUI tranne alcuni collegamenti ad alcuni strumenti a cui solo gli insegnanti hanno accesso. Diciamo che questo è uno strumento di messaggistica. Un insegnante può avere ruoli diversi che definiscono a chi può inviare l'insegnante.
Ad esempio:
- Un insegnante con il ruolo
Publisher
sono autorizzati a inviare a tutti nella scuola. - Un insegnante senza ruoli aggiuntivi può solo inviare a tutti i suoi corsi.
- In futuro, i genitori potranno anche accedere a questo portale e visualizzare informazioni dettagliate sui propri figli.
Il problema che ho sempre trovato in è che il mio codice è sempre sempre ingombra di if
-statements durante la manipolazione di diversi tipi di utenti in tutto l'applicazione. Non solo per i diversi tipi di utenti, ma anche per le diverse regole aziendali. Sento che non riesco a trovare alcun modo per gestire correttamente diversi tipi di utenti.
Immagino che il concetto di ruoli in ASP.NET risolva questo problema, ma si finirebbe comunque con gli if
-statements intorno all'applicazione.
La mia domanda è: Esiste qualche best practice su come gestire diversi utenti/tipi di utenti in un'applicazione senza infettare il codice con gli stati if
?
Se aveste classi diverse per ogni tipo di utente, dovresti "decorare" la classe con comportamenti (fatti con interfacce?) Che darebbero loro proprietà di Publishing, ecc.? –
Ho paura di non capire la tua domanda correttamente. –
La mia domanda è: come implementeresti questo? Supponiamo che tu abbia diverse classi C# per ciascun tipo di utente. Cosa darebbe loro questo comportamento, ad esempio Publishing? Immagino che questo risponda osservando il modello di strategia, ma sarebbe davvero dolce se si potesse abbozzare l'aspetto del codice. –