Rails - Pundit - как проверить current_admin_user? - PullRequest
0 голосов
/ 25 августа 2018

Я использую Pundit для авторизации для моей модели User.

Моя цель состоит в том, чтобы расширить это использование моей модели AdminUser, особенно для моего пространства имен администратора.

По умолчанию Pundit проверяет наличие«пользователь» или «текущий_пользователь».Как я могу изменить это, чтобы проверить «admin_user» или «current_admin_user», основанный на Devise?

icies / admin / admin_policy.rb (закрытая система, в настоящее время ищет пользователя вместоAdminUser)

class Admin::AdminPolicy
  attr_reader :user, :record

  def initialize(user, record)
    # Must be logged in
    raise Pundit::NotAuthorizedError, "You must be logged in to perform this action" unless user
    @user = user
    @record = record
  end

  def index?
    false
  end

  def show?
    false
  end

  def create?
    false
  end

  def new?
    create?
  end

  def update?
    false
  end

  def edit?
    update?
  end

  def destroy?
    false
  end

  class Scope
    attr_reader :user, :scope

    def initialize(user, scope)
      raise Pundit::NotAuthorizedError, "You must be logged in to perform this action" unless user
      @user = user
      @scope = scope
    end

    def resolve
      scope.all
    end
  end
end

icies / admin / home_policy.rb (Пример подполитики пространства имен Admin)

class Admin::HomePolicy < Admin::AdminPolicy

  def index?
    user.present?
  end

end

1 Ответ

0 голосов
/ 25 августа 2018

Я думаю, вам нужно определить метод pundit_user на ваших контроллерах, чтобы настроить его https://github.com/varvet/pundit#customize-pundit-user

def pundit_user
  current_admin_user
end
...