4

ActiveAdmin on Railsを使用していて、管理者ユーザーを非スーパーユーザーに維持しているサイトのセクションをロックダウンしようとしています。

当然、次のようにメニューオプションを非表示にできます。

ActiveAdmin.register AdminUser do
  menu :parent => "Settings", :if => proc { current_admin_user.superuser }
end

ただし、メニューをバイパスして/ admin / admin_usersに直接移動した場合でも、ルートは機能します

ActiveAdminで管理者のルートとコントローラーをロックダウンするためのベストプラクティスは何ですか。

4

3 に答える 3

14

リソースが登録されているコントローラーブロックに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

ソース

于 2014-06-14T07:42:54.810 に答える
1

cancanを試しましたか:https ://github.com/ryanb/cancan ?完璧な例の要点があります:https ://gist.github.com/1264060

于 2012-05-03T13:39:17.803 に答える
1

@Tom Powerのソリューションは素晴らしいですが、構成に保存することをお勧めします。config/initializers/active_admin.rb

ActiveAdmin.setup do |config|
  def ensure_admin!
    raise ActionController::RoutingError.new('Not Found') unless current_user.superadmin?
  end

  config.before_action :ensure_admin!      
end
于 2019-11-15T13:45:46.510 に答える