Activeadmin限制对非超级用户项的访问

cre*_*ist 3 ruby-on-rails activeadmin

我在Rails上使用ActiveAdmin,我正在尝试锁定网站的部分,该部分将管理员用户维护到非超级用户.

当然,我可以隐藏菜单选项,如下所示:

ActiveAdmin.register AdminUser do
  menu :parent => "Settings", :if => proc { current_admin_user.superuser }
end
Run Code Online (Sandbox Code Playgroud)

但是,如果您绕过菜单并直接转到/ admin/admin_users,路由仍然有效

在ActiveAdmin中锁定管理员的路由和控制器的最佳做法是什么.

Tom*_*wer 12

您可以将before_filter添加到注册资源的控制器块,这对我有用:

ActiveAdmin.register User do

  menu :if => proc{ current_user.superadmin? }

  controller do
    before_filter :superadmin_filter

    def superadmin_filter
      raise ActionController::RoutingError.new('Not Found') unless current_user.superadmin?
    end
  end
Run Code Online (Sandbox Code Playgroud)

资源

  • 自从我从Google来到这里以来,我想指出这对我来说是正确的,它基本上禁用了任何非超级用户的UserAdmin CRUD。但是,在最新的Rails版本中,应该将“ before_filter”更改为“ before_action”,其余的都可以正常工作。 (2认同)

Mik*_*Mik 1

您尝试过康康舞吗: https: //github.com/ryanb/cancan?有一个完美示例的要点:https ://gist.github.com/1264060