búsqueda Stackoverflow.com me dieron esta pregunta/respuesta: Custom authentication strategy for devise
Básicamente, usted tiene que poner en práctica una estrategia de autenticación personalizado a nivel de Warden (que subyace Idear). Para mi proyecto, hice lo siguiente:
En config/initializers/devise.rb
:
Devise.setup do |config|
config.warden do |manager|
manager.default_strategies(:scope => :user).unshift :user_has_login_access
end
end
Warden::Strategies.add(:user_has_login_access) do
def valid?
# pass the commit parameter as 'login' or something like that, so that this strategy only activates when the user is trying to login
params[:commit] == 'login'
end
def authenticate!
u = User.find_by_email(params[:user][:email])
if u.can_login? # retrieves boolean value stored in the User model, set wherever
success! u
else
fail! "Account does not have login privilages."
end
end
end
Puede leer más sobre las estrategias Warden personalizados aquí: https://github.com/hassox/warden/wiki/Strategies
espero que ayude!
A mediados de 2013, y esto todavía funciona. –