2013-07-17 41 views
0

我有应用程序,并连接活动管理员。我试图让管理员用户通过使用devises的sign_in @user方法的无活动管理员的任何用户登录。是否有可能实现这个框?从活动管理员登录到主应用程序

我可以在params/session中使用用户名进行重定向,但那不是安全的,就好像我不想在活动管理员之外传递任何东西。

任何想法?

+0

可以合并activeadmin用户和现有用户,让现有的用户与管理员标志可以登录到活动管理员。检查了这个http://stackoverflow.com/questions/9253587/merging-activeadmin-users-with-existing-user-model –

+0

这是有点不同。我希望我的admin_user(s)能够以任何用户身份登录(通过活动管理员) – Avdept

回答

0

我不确定你的意思是“不安全”。设计内部可以确保你是一个管理员用户,等等,你需要传递的是新用户的用户名。也就是说,下面的代码完全在ActiveAdmin中,并且会实现你想要的。

N.B.我想不出一种简单的方法来签署Admin用户(我对所有用户使用相同的Devise并使用基于角色的身份验证)。

member_action :sign_in_as, :method => :put do 
    user = User.find(params[:id]) 
    sign_in user, bypass: true 
    redirect_to root_path 
end 

action_item :only => :show do 
    link_to('Sign in As', sign_in_as_admin_user_path(user), method: 'put') 
end 
0

可以使用另一种方法,首先这样的认证管理做到这一点,

def authenticate_any! 
    if authenticate_admin_user! 
    true 
    else 
    authenticate_user! 
    end 
end 

或覆盖设计

module Devise 
module Controllers 
    module Helpers 
    def authenticate_user! 
    if authenticate_admin_user! 
     return true 
    end 
    super 
    end 
    end 
end 
end