Я пытаюсь реализовать switch_user gem в моем существующем приложении rails 3.0.9.
В моем приложении две модели, они
- Пользователь - для моих учетных записей клиентов, и это has_one Аккаунт
- AdminUser - Это было создано ActiveAdmin
Я уже включил разработку аутентификации для Users
, и ActiveAdmin также очень хорошо работает с AdminUser
. Теперь из своего интерфейса Active Admin я бы хотел выбрать учетные записи и войти в них, как и владелец учетной записи. Переключение пользователей работает нормально, но проблема в том, что любой может просто войти в учетные записи пользователей, если они знают URL-адреса.
http://localhost:3000/switch_user?scope_identifier=user_1
Все, что мне нужно, это разрешить только AdminUser (т. Е. Если есть сеанс ActiveAdmin) для доступа к учетным записям пользователя.
Вот так выглядит мой /config/initializers/switch_user.rb
SwitchUser.setup do |config|
config.controller_guard = lambda { |current_user, request| current_admin_user.nil?}
config.redirect_path = lambda { |request, params| "/dashboard" }
end
Но я получаю эту ошибку
NameError in SwitchUserController#set_current_user
undefined local variable or method `current_admin_user' for main:Object
Можно ли в любом случае получить доступ к сеансу активного администратора?
Код для /config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
config.site_title = "MyAppName"
config.authentication_method = :authenticate_admin_user!
config.current_user_method = :current_admin_user
end
Кстати, в моем контроллере приложений я не создал никаких методов для authenticate_admin_user
, current_admin_user
активный администратор работает без них.