3

アプリケーション自体に単一のUserモデルを使用しています。と を使用して、activeadmin のモデル ページへのアクセスを制限する解決策adtiveadminを見つけました。上記の例では、ロールを作成するために定数を使用しており、gem を使用していることに注意してください。それでも、activeadmin のダッシュボードには簡単にアクセスできます。CMS でモデルにアクセスしようとすると、アプリケーションのルート ページにリダイレクトされ、このページにアクセスする権限がないというエラー メッセージが表示されます。CanCanrolifyrolify

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
4

1 に答える 1

0

.. アプリケーションのルート ページにリダイレクトされます ..

ほとんどのアプリには、Wiki ページのException Handlingrescue_from(CanCan::AccessDenied)で説明されているように があります。ApplicationController

[なりたい] activeadmin の認証ページにリダイレクトされる

rescue_fromactiveadmin 内でそれをオーバーライドしてみてください。

于 2013-07-06T15:29:19.290 に答える