How to get Active Admin to work with Pundit after login

爱⌒轻易说出口 提交于 2019-12-30 09:47:09

问题


I've added the configuration pundit addapter authorization to my application

config.authorization_adapter = ActiveAdmin::PunditAdapter

When I login with the admin@example.com credentials I'm getting this error.

Pundit::NotDefinedError in Admin::Dashboard#index
unable to find policy AdminUserPolicy

Extracted source (around line #2):

insert_tag active_admin_application.view_factory["page"]

so I created these files in my policies/active_admin folder

adminuser_policy.rb

module ActiveAdmin
class AdminUserPolicy < ApplicationPolicy
class Scope < Struct.new(:user, :scope)
  def resolve
    scope
  end
end
def home?
true
end

def index?
true 
end
def show?
true 
end
def new?
true
end

def create?
 true
end

def update?
true 
end

  def destroy?
    true 
 end
end

end

page_policy.rb

module ActiveAdmin
class PagePolicy < ApplicationPolicy
  class Scope < Struct.new(:user, :scope)
  def resolve
    scope
  end
 end
   def index?
      true
   end

   def show?
     true
   end
  end
end

What am I missing? Thanks for the help!


回答1:


I found the answer!

After adding these two lines to the active admin initializer file

config.authorization_adapter = ActiveAdmin::PunditAdapter 

#this line sets the default policy to application_policy.rb
config.pundit_default_policy = "ApplicationPolicy"

I had to add this to dashboard.rb under app/admin/dashboard.rb

def index
  authorize :dashboards, :index?
end

Then I created a file in my policies folder called dashboard_policy.rb and added this code

class DashboardPolicy < ApplicationPolicy
   def dashboard?
   true
  end
  def index?
   true
  end
 end

That got it working!



来源:https://stackoverflow.com/questions/27883386/how-to-get-active-admin-to-work-with-pundit-after-login

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!