我为 adtiveadmin
和应用程序本身使用单个 User
模型。我找到了 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
最佳答案
.. i'm redirected to application's root page ..
大多数应用程序在其 ApplicationController
中都有一个 rescue_from(CanCan::AccessDenied)
,如维基页面 Exception Handling 中所述.
[I want to be] redirected to activeadmin's authorization page
尝试覆盖 activeadmin 中的 rescue_from
。
关于ruby-on-rails - 为应用程序和 CMS 使用单用户模型时如何限制对 activeadmin 仪表板的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362661/