Я использую Devise для аутентификации в своем приложении.
Как мне запретить определенным пользователям входить в систему - как отключить пользователя?
ruby-on-rails
devise
Димитар Вулджефф
источник
источник
Ответы:
Делай это так:
Создайте столбец, названный
is_active
дляUser
модели.Затем добавьте в
User
модель приведенный ниже код :ОБНОВИТЬ
Как отмечает Мэтт Хаггинс, теперь метод называется
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
:Если вы хотите проинформировать пользователя с помощью настраиваемого сообщения, вы также можете добавить это:
Я думаю, что это очень важно, потому что стандартное сообщение от Devise гласит:
Это сбивает пользователей с толку, и настоящая причина в том, что вы «запретили» им вход в систему.
источник
Вы хотите выполнить авторизацию, а не аутентификацию. Однако Devise занимается только аутентификацией.
Т.е. devise только говорит вам, что пользователь - это тот, кем он себя называет.
Вам нужно что-то еще, чтобы запретить ему пользоваться сайтом.
Авторизация - популярная тема, и есть целый список драгоценных камней, которые могут вам в этом помочь:
http://ruby-toolbox.com/categories/rails_authorization.html
Выбирайте.
источник
Похоже, вас может заинтересовать канкан
источник