Я использую 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?
( Документация )
active_for_authentication?
вместо просто active?
.
the method is now called active_for_authentication?
означает, что имя вашего метода должно быть active_for_authentication?
вместо active?
.
active_for_authentication?
метод должен быть общедоступным!
super and self.is_active?
можно упростить доsuper && is_active?
Добавить столбец в 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 занимается только аутентификацией.
Т.е. devise только говорит вам, что пользователь - это тот, кем он себя называет.
Вам нужно что-то еще, чтобы запретить ему пользоваться сайтом.
Авторизация - популярная тема, и есть целый список драгоценных камней, которые могут вам в этом помочь:
http://ruby-toolbox.com/categories/rails_authorization.html
Выбирайте.
Похоже, вас может заинтересовать канкан