我正在为User
和应用程序本身使用单adtiveadmin
模型。我找到了solution来限制使用CanCan
和rolify
访问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
答案 0 :(得分:0)
..我被重定向到应用程序的根页面。
大多数应用在rescue_from(CanCan::AccessDenied)
中都有ApplicationController
,如维基页Exception Handling中所述。
[我希望]被重定向到activeadmin的授权页面
尝试覆盖activeadmin中的rescue_from
。