Sto usando Devise per l'autenticazione nella mia applicazione.
Come faccio a vietare l'accesso a determinati utenti, in qualche modo disabilitare un utente?
Sto usando Devise per l'autenticazione nella mia applicazione.
Come faccio a vietare l'accesso a determinati utenti, in qualche modo disabilitare un utente?
Risposte:
Fai cosi:
Crea una colonna chiamata is_active
per il User
modello.
Quindi aggiungi il codice seguente al User
modello:
class User < ActiveRecord::Base
#this method is called by devise to check for "active" state of the model
def active_for_authentication?
#remember to call the super
#then put our own check to determine "active" state using
#our own "is_active" column
super and self.is_active?
end
end
AGGIORNARE
Come osserva Matt Huggins, il metodo è ora chiamato active_for_authentication?
( Documentazione )
active_for_authentication?
anziché solo active?
.
the method is now called active_for_authentication?
significa che il nome del tuo metodo dovrebbe essere active_for_authentication?
invece di active?
.
active_for_authentication?
deve essere un metodo pubblico!
super and self.is_active?
può essere semplificato insuper && is_active?
Aggiungere una colonna al User
modello allowed_to_log_in
.
Quindi aggiungi questo a /app/models/user.rb
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Se vuoi informare l'utente con un messaggio personalizzato puoi aggiungere anche questo:
def inactive_message
"You are not allowed to log in."
end
Penso che sia abbastanza importante perché il messaggio standard di Devise dice:
"Il tuo account non è ancora attivato."
Questo crea confusione per gli utenti e il vero motivo è che li hai "banditi" dall'accesso.
Vuoi eseguire l'autorizzazione, non l'autenticazione. Devise fa solo l'autenticazione, però.
Cioè devise ti dice solo che un utente è chi dice di essere.
Hai bisogno di qualcos'altro per impedirgli di utilizzare il sito.
L'autorizzazione è un argomento popolare e c'è un intero elenco di gemme che possono aiutarti con esso:
http://ruby-toolbox.com/categories/rails_authorization.html
Fai la tua scelta.
Sembra che tu possa essere interessato a Cancan