Class: ProxES::RequestPolicy

Inherits:
Object
  • Object
show all
Defined in:
lib/proxes/policies/request_policy.rb

Defined Under Namespace

Classes: Scope

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, record) ⇒ RequestPolicy

Returns a new instance of RequestPolicy.



13
14
15
16
# File 'lib/proxes/policies/request_policy.rb', line 13

def initialize(user, record)
  @user = user || Ditty::User.anonymous_user
  @record = record
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_sym, *arguments, &block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
# 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

Instance Attribute Details

#recordObject (readonly) Also known as: request

Returns the value of attribute record.



10
11
12
# File 'lib/proxes/policies/request_policy.rb', line 10

def record
  @record
end

#userObject (readonly)

Returns the value of attribute user.



10
11
12
# File 'lib/proxes/policies/request_policy.rb', line 10

def user
  @user
end

Instance Method Details

#permissionsObject



36
37
38
# 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) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/proxes/policies/request_policy.rb', line 32

def respond_to_missing?(name, _include_private = false)
  name[-1] == '?'
end