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_activeper il Usermodello.
Quindi aggiungi il codice seguente al Usermodello:
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 Usermodello 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