Mi piacerebbe avere la vostra opinione sul seguente problema di gestione degli utenti, e come implementarlo con Yii.
Ho una webapp che ha tre tipi di utenti:
Utente lettore di contenuti, di cui devo memorizzare i campi della tabella_1
Utente scrittore di contenuti di cui devo memorizzare i campi della tabella_2
Utente amministratore, di cui devo memorizzare solo login e password
Vorrei ovviamente che ogni utente dopo il login veda il proprio "ambiente" e abbia i propri permessi.
Vorrei inoltre personalizzare la registrazione proponendo i campi di tabella_1 e tabella_2 come alternativi tra di loro dopo che l’utente ha espresso il tipo di profilo.
Avete idee o suggerimenti (Basati su Yii) di come dovrei impostare il database e il UserIdentity per una buona gestione?
Perdonate la domanda banale, ma non è la prima volta che devo risolvere il problema e mi piacerebbe avere un approccio pulito e scalabile (Immaginiamo il caso in cui ho anche utenti di tipo 4, tipo 5 e così via).
Io ti consiglio di avere una sola tabella di autenticazione per tutti gli utenti.
Per i permessi puoi usare il sistema rbac di yii (vedi il link di sensorario).
Per i campi specifici per tipo utente ci sono 2 varianti:
Metti tutto in una sola tabella (quindi con tanti campi che saranno null): soluzione quasi obbligata se uno scrittore puo’ essere anche lettore
Una tabella a parte in relazione 1:1 con gli utenti per i campi accessori (soluzione utile se hai 100 lettori per ogni scrittore e non vuoi aver tanti null).
Per la form devi creare uno scenario per tipo utente (che imposti nel controller), sul client puoi semplicemente mostrare/nascondere i campi accessori.