Вход в аккаунт другого пользователя с помощью Devise+Active Admin+Switch User

Я пытаюсь реализовать switch_user gem в моем существующем приложении rails 3.0.9. В моем приложении есть две модели, это

  1. User - для моих клиентских счетов и has_one Account
  2. AdminUser - Он был создан ActiveAdmin

Я уже включил devise аутентификацию для Users и ActiveAdmin также работает довольно хорошо с AdminUser. Теперь из интерфейса Active Admin я хочу выбрать учетные записи и войти в них так же, как это делает владелец учетной записи. Переключение пользователей работает нормально, но проблема в том, что любой может просто войти в учетные записи пользователей, если знает их адреса.

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

btw в моем контроллере приложения я не создавал никаких методов для authenticate_admin_user , current_admin_user active admin прекрасно работает без них.

9
задан randika 9 January 2012 в 13:17
поделиться