module Godmin::Authorization

Public Instance Methods

already_namespaced?(subject) click to toggle source
# File lib/godmin/authorization.rb, line 50
def already_namespaced?(subject)
  subject.to_s.start_with?("#{engine_wrapper.namespace.name}::")
end
find_class_name(subject) click to toggle source

Borrowed from Pundit::PolicyFinder

# File lib/godmin/authorization.rb, line 36
def find_class_name(subject)
  if subject.respond_to?(:model_name)
    subject.model_name
  elsif subject.class.respond_to?(:model_name)
    subject.class.model_name
  elsif subject.is_a?(Class)
    subject
  elsif subject.is_a?(Symbol)
    subject.to_s.camelize
  else
    subject.class
  end
end
namespaced_record(record) click to toggle source
# File lib/godmin/authorization.rb, line 24
def namespaced_record(record)
  return record unless engine_wrapper.namespaced?

  class_name = find_class_name(record)
  if already_namespaced?(class_name)
    record
  else
    engine_wrapper.namespaced_path.map(&:to_sym) << record
  end
end
policy(record) click to toggle source
# File lib/godmin/authorization.rb, line 16
def policy(record)
  policies[record] ||= Pundit.policy!(pundit_user, namespaced_record(record))
end
pundit_user() click to toggle source
# File lib/godmin/authorization.rb, line 20
def pundit_user
  admin_user
end