class ProxES::RequestPolicy

Attributes

record[R]
request[R]
user[R]

Public Class Methods

new(user, record) click to toggle source
# File lib/proxes/policies/request_policy.rb, line 13
def initialize(user, record)
  @user = user || Ditty::User.anonymous_user
  @record = record
end

Public Instance Methods

method_missing(method_sym, *arguments, &block) click to toggle source
Calls superclass method
# File lib/proxes/policies/request_policy.rb, line 18
def method_missing(method_sym, *arguments, &block)
  return super unless respond_to_missing? method_sym

  return false if permissions.empty?

  return permissions.count.positive? unless request.indices?

  # Only allow if all the indices match the given permissions
  request.indices.find do |idx|
    idx = idx[1..-1] if idx[0] == '-'
    permissions.find { |perm| perm.index_regex.match idx }.nil?
  end.nil?
end
permissions() click to toggle source
# File lib/proxes/policies/request_policy.rb, line 36
def permissions
  @permissions ||= Permission.for_user(user).for_request(request)
end
respond_to_missing?(name, _include_private = false) click to toggle source
# File lib/proxes/policies/request_policy.rb, line 32
def respond_to_missing?(name, _include_private = false)
  name[-1] == '?'
end