In questi giorni, continuando l'opera di refactoring (e abbondante rewriting) su una applicazione presa in... consegna, mi sono ritrovato nuovamente di fronte ad una gestione degli account che francamente non condivido.
Innanzitutto cosa sono (per lo meno, per come li ho capiti io! :-D):
- Ruoli applicativi: sono quei profili a cui l'applicazione stessa offre differenti comportamenti (oserei dire che sono differenti attori in un diagramma UML, sperando che Ricky non mi fulmini se scrivo qualche fesseria!).
Per fare un esempio, se in una applicazione di e-commerce esistono il ruolo di cliente ed il ruolo di operatore, l'applicativo probabilmente presenterà una differente pagina iniziale dopo il login, una mappa di navigazione differente ed un elenco di casi d'uso differenti.
- Permessi: è superfluo dirlo, ma rappresentano la concessione o la negazione (implicita nel caso di permessi di default) del permesso di eseguire una singola operazione (un singolo caso d'uso).
- Gruppi di permessi: spesso vengono anche considerati (erroneamente IMHO) come gruppi di utenti, ma in sostanza sono banalmente degli insiemi di permessi che vengono creati per poter associare più agevolmente (ed in modo più "organizzato") un certo numero di permessi alle varie utenze.
Per gestire questo contesto mi sono creato una piccola dll con le "solite entità" chiamate in causa:
Le semplici asserzioni su cui mi sono basato sono le seguenti:
- ogni persona fisica deve avere un singolo account nel sistema;
- ogni persona fisica può, nei casi eccezionali che poi in ambito aziendale non risultano poi così rari, interpretare più ruoli applicativi, tra i quali eventualmente viene impostato uno di default;
- i classici ruoli di operatore di back-end e di cliente vengono rappreserntati da OperatorProfile ed EmployeeProfile, che a sua volta viene associato al Customer (inteso come ditta);
- è possibile aggiungere ulteriori ruoli applicativi implementando IApplicationProfile o, meglio, ereditando da ApplicationProfileBase;
- sono assegnabili ad ogni utenza sia permessi singoli che gruppi di permessi.
Tutto qui, niente di particolare.
Commenti e suggerimenti sono sempre ben accetti, ma se mi consigliate di cambiare lavoro, ricordatevi di cercarmi prima un posto da pilota nel WTCC!!! :-p