如何在为app和CMS使用单用户模型时限制对activeadmin仪表板的访问?

时间:2012-07-06 12:57:08

标签: ruby-on-rails ruby cancan activeadmin

我正在为User和应用程序本身使用单adtiveadmin模型。我找到了solution来限制使用CanCanrolify访问activeadmin的模型页面。请注意,在上面的示例中,他们使用常量来创建角色,并使用rolify gem。不过我可以轻松访问activeadmin的仪表板。当我尝试访问CMS中的模型时,我被重定向到应用程序的根页面,并显示一条错误消息,指出我无权访问此页面。

有没有办法限制对activeadmin的仪表板和模型的访问,以便我重定向 到activeadmin的授权页面?

这是我的active_admin_resource初始化程序

#config/initializers/active_admin_resources.rb
ActiveAdmin::ResourceController.class_eval do
protected
  def current_ability
    @current_ability ||= AdminAbility.new(current_user)
  end
end

能力等级定义如下:

#app/models/admin_ability.rb
class AdminAbility < ActiveRecord::Base
include CanCan::Ability

def initialize(user)
  user ||= User.new
  if user.has_role? :admin
    can :manage, :all
  end
end

Activeadmin的模型以这种方式定义:

#app/admin/some_model.rb
ActiveAdmin.register SomeModel do
  controller.authorize_resource
end

最后,activeadmin的路由定义如下:

#config/routes.rb
Rallypoint::Application.routes.draw do
  ActiveAdmin.routes(self)
end

1 个答案:

答案 0 :(得分:0)

  

..我被重定向到应用程序的根页面。

大多数应用在rescue_from(CanCan::AccessDenied)中都有ApplicationController,如维基页Exception Handling中所述。

  

[我希望]被重定向到activeadmin的授权页面

尝试覆盖activeadmin中的rescue_from