Я використовую 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 говорить:
"Ваш обліковий запис ще не активовано."
Це незрозуміло для користувачів, і справжня причина полягає в тому, що ви "заборонили" їм входити в систему.
Ви хочете зробити авторизацію, а не автентифікацію. Хоча придумайте лише аутентизацію.
Тобто пристрій лише вам повідомляє, що користувач - це той, хто каже, що він є.
Вам потрібно щось інше, щоб заборонити йому користуватися сайтом.
Авторизація є популярною темою, і тут є цілий список дорогоцінних каменів, які можуть вам допомогти:
http://ruby-toolbox.com/categories/rails_authorization.html
Беріть свій вибір.
Схоже, що вас може зацікавити канкан