Devise - Как запретить подписчикам некоторых пользователей?
Я использую Devise для аутентификации в своем приложении.
Как запретить определенным пользователям входить в систему - отключить пользователя?
Ответ 1
Сделайте это так:
Создайте столбец с именем is_active для модели User.
Затем добавьте код ниже в модель User:
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
ОБНОВЛЕНИЕ
Как отмечает Мэтт Хаггинс, этот метод теперь называется active_for_authentication? (Документация)
Ответ 2
Добавьте столбец в модель User: allowed_to_log_in.
Затем добавьте это в /app/models/user.rb:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Если вы хотите сообщить пользователю пользовательское сообщение, вы также можете добавить его:
def inactive_message
"You are not allowed to log in."
end
Я думаю, что это очень важно, потому что стандартное сообщение от Devise говорит:
"Ваша учетная запись еще не активирована."
Это запутанно для пользователей, и настоящая причина заключается в том, что вы "запретили" их при входе в систему.
Ответ 3
Вы хотите сделать авторизацию, а не аутентификацию. Однако придумайте, есть ли только аутизм.
То есть devise только говорит вам, что пользователь - тот, кем он говорит.
Вам нужно что-то еще, чтобы запретить ему пользоваться сайтом.