Authlogic: гарантия того, что пользователь не сможет войти дважды
Есть ли простой способ в Authlogic (не находя ничего, просматривая документы), чтобы гарантировать, что UserSession не может быть создан, если у пользователя уже есть объект UserSession?
Другими словами: я хочу убедиться, что пользователь не может войти в систему дважды с одинаковыми учетными данными.
ОБНОВЛЕНИЕ: Проверьте комментарии на ответ вора, чтобы найти решение этой проблемы.
2 ответа
Решение
В вашем контроллере пользовательских сессий:
before_filter :require_no_user, :only => [:new, :create]
в вашем контроллере приложения:
def require_no_user
if current_user
store_location
flash[:notice] = "You must be logged out to access this page"
redirect_to account_url
return false
end
end
На мой взгляд, более чистый подход заключается в использовании обратных вызовов в классе UserSession. Например, вы можете определить обратный вызов before_create и пометить модель как недействительную в соответствующем случае. Хотя сам не пробовал. Вот документы для модуля Callbacks.