Estoy usando Devise para la autenticación en mi aplicación.
¿Cómo prohíbo a ciertos usuarios iniciar sesión? ¿Cómo deshabilitar a un usuario?
ruby-on-rails
devise
Dimitar Vouldjeff
fuente
fuente
Respuestas:
Hazlo asi:
Cree una columna llamada
is_active
para elUser
modelo.Luego agregue el siguiente código al
User
modelo:ACTUALIZAR
Como señala Matt Huggins, el método ahora se llama
active_for_authentication?
( Documentación )fuente
active_for_authentication?
lugar de soloactive?
.the method is now called active_for_authentication?
significa que el nombre de su método debe ser enactive_for_authentication?
lugar deactive?
.active_for_authentication?
tiene que ser un método público!super and self.is_active?
se puede simplificar asuper && is_active?
Agregue una columna al
User
modelo:allowed_to_log_in
.Luego agregue esto a
/app/models/user.rb
:Si desea informar al usuario con un mensaje personalizado, también puede agregar esto:
Creo que es bastante importante porque el mensaje estándar de Devise dice:
Eso es confuso para los usuarios y la verdadera razón es que les ha "prohibido" iniciar sesión.
fuente
Quiere hacer una autorización, no una autenticación. Sin embargo, Devise solo hace autenticación.
Es decir, devise solo te dice que un usuario es quien dice ser.
Necesita algo más para prohibirle el uso del sitio.
La autorización es un tema popular y hay una lista completa de gemas que pueden ayudarte:
http://ruby-toolbox.com/categories/rails_authorization.html
Haz tu elección.
fuente
Parece que te puede interesar el cancán
fuente