Я пытаюсь реализовать switch_user gem в моем существующем приложении rails 3.0.9. В моем приложении есть две модели, это
Я уже включил 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 прекрасно работает без них.