用Devise + Active Admin + Switch登录其他用户的帐户用户
我试图在我现有的rails 3.0.9应用程序中实现switch_user gem。 上有我的应用程序两种型号,它们是用Devise + Active Admin + Switch登录其他用户的帐户用户
- 用户 - 为我的客户账户,它HAS_ONE帐户
- ADMINUSER - 这是由ActiveAdmin
我已经为Users
启用了设计验证,并且ActiveAdmin也与一起工作得非常好。现在,从我的Active Admin界面中,我想选择帐户并像帐户所有者一样登录到这些帐户。切换用户工作正常,但问题是任何人都可以简单地登录到现在的用户帐户,如果他们知道的网址。
http://localhost:3000/switch_user?scope_identifier=user_1
所有我需要的是只允许一个管理用户(即如果有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
反正我有可以访问活动admin会话?
代码/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
主动管理工作正常,没有他们的任何方法。
好的我想我找到了一个解决方案来保护switch_user
。我所做的是移动admin_users范围
ActiveAdmin.routes(self)
devise_for :admin_users, ActiveAdmin::Devise.config do
match '/admin/switch_user', :controller => 'switch_user', :action => 'set_current_user'
end
我似乎无法得到这个工作。当我耙路时,我甚至看不到路线。你有没有尝试过这个新版本的activeadmin? – meatherly 2013-12-16 17:35:33
内部路由需要修改本地config/initializers/switch_user.rb
:
config.controller_guard = lambda { |current_user, request, original_user, controller|
controller.admin_user_signed_in?
}
原拉姆达有2个参数。 只需追加更多(最多4个)并使用它。
不要忘记重新启动导轨服务器:)
这应该在switch_user文档中 – 2015-12-03 18:07:39
我尝试了几乎所有我能想到但仍然没有运气的东西。其他人请吗? – randika 2012-01-03 12:33:16