Я использую Pundit для авторизации моей модели пользователя.
Моя цель - расширить это, чтобы использовать мою модель AdminUser, особенно для моего пространства имен администратора.
По умолчанию Pundit проверяет наличие «пользователя» или «текущего_пользователя». Как я могу изменить это, чтобы проверить наличие «admin_user» или «current_admin_user» на основе Devise?
policy / 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
policy / admin / home_policy.rb (пример подполитики пространства имен Admin)
class Admin::HomePolicy < Admin::AdminPolicy
def index?
user.present?
end
end