我在项目的早期设置了ActiveAdmin,并使用默认的admin_users
模型进行身份验证。我已经使用Devise来设置一个单独的用户模型,并且已经意识到合并这两个表可能会更加智能,这样管理员就可以在Activeadmin和站点的前端进行管理操作。如何配置ActiveAdmin以使用Users模型,可能有一列标记管理员(例如is_admin
或事件权限级别以管理员和管理员)?
Rails 3.1
ActiveAdmin 0.3.3
Devise 1.4.9
答案 0 :(得分:9)
对于如何使用带有activeadmin的现有“User”模型执行此操作的快速代码块,答案实际上非常简单。在ApplicationController中:
class ApplicationController < ActionController::Base
def authenticate_admin_user! #use predefined method name
redirect_to '/' and return if user_signed_in? && !current_user.is_admin?
authenticate_user!
end
def current_admin_user #use predefined method name
return nil if user_signed_in? && !current_user.is_admin?
current_user
end
end
只需使用Devise已经设置的身份验证。 redirect_to
是您要发送已登录且没有管理权限的用户的位置。
答案 1 :(得分:4)
ActiveAdmin让你define your own authentication methods。您可以迁移用户表以拥有其他管理列并在其中标记现有管理员,然后在config/initializers/active_admin.rb
中设置您的身份验证方法(如指定)。