L'autenticazione consiste nella verifica dell'identità dell'utente. La aggiungeremo alla nostra applicazione sfruttando la gem "devise"... inseriscila in fondo al Gemfile:
Installala quindi con
bundle install
Se l'installazione è andata buon fine prepara la configurazione con
rails g devise:install
Segui quindi le indicazioni che saranno visualizzate. In particolare...
Configurare i link delle email inviate da devise
Ricordati di cambiare nell'esempio qui sopra il numero di porta.
Definire una rotta "root"
Fare in modo che le notifiche siano visibili in tutte le pagine
Generare il model per gli utenti
rails g devise User
Con questo comando chiediamo a devise di generare per noi una migrazione che creerà un nuovo model, denominato User, che conterrà nome utente e password di tutti gli utenti, oltre a eventuali dati aggiuntivi.
Possiamo aggiungere alla migrazione un campo booleano che specifica se un utente è amministratore (false di default!):
Applichiamo la migrazione:
rails db:migrate
Preparare l'uso con Turbo
Decommenta e modifica queste righe dell'initializer di devise, che ci permetteranno di integrare devise con le funzionalità avanzate di Rails 7:
Predisporre uno scaffold per gestire gli utenti
rails g scaffold_controller User email:string admin:boolean
Le rotte generate da devise_for :users devono apparire prima di quelle generate dallo scaffold (resources :users), o si verificherà un problema richiedendo l'autenticazione per il controller Users:
Definire un'area riservata
Richiedi che l'utente sia autenticato prima di accedere al controller della tua area riservata:
Nota che l'autenticazione sarà richiesta per tutte le azioni di questo controller, eccetto show: in questo modo anche gli utenti non loggati avranno accesso alle schede dei libri.
Copia le viste di devise in modo da poterle personalizzare in un secondo momento:
rails g devise:views
Troverai in questa la cartella le varie viste da personalizzare: Esse si riferiscono ai vari casi:
conferma di un utente
invio di email all'utente
modifica della password
registrazione di un nuovo utente
login dell'utente
sblocco dell'utente
La cartella shared contiene un partial con i link che compaiono in tutte queste pagine.
Riavviare Foreman
Dato che abbiamo aggiunto un initializer, che è un componente che viene usato all'avvio dell'applicazione, riavvia Foreman in modo che possa utilizzarlo.