Я использую Devise для аутентификации в своем приложении.
Как запретить определенным пользователям входить в систему - отключить пользователя?
Я использую Devise для аутентификации в своем приложении.
Как запретить определенным пользователям входить в систему - отключить пользователя?
Сделайте это так:
Создайте столбец с именем 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?
(Документация)
Добавьте столбец в модель 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 говорит:
"Ваша учетная запись еще не активирована."
Это запутанно для пользователей, и настоящая причина заключается в том, что вы "запретили" их при входе в систему.
Вы хотите сделать авторизацию, а не аутентификацию. Однако придумайте, есть ли только аутизм. То есть devise только говорит вам, что пользователь - тот, кем он говорит. Вам нужно что-то еще, чтобы запретить ему пользоваться сайтом.
Авторизация - популярная тема, и есть целый список драгоценных камней, которые могут вам помочь:
http://ruby-toolbox.com/categories/rails_authorization.html
Сделайте свой выбор.
Похоже, что вас может заинтересовать cancan