Class: ProxES::RequestPolicy
- Inherits:
-
Object
- Object
- ProxES::RequestPolicy
show all
- Includes:
- Helpers::Indices
- Defined in:
- lib/proxes/policies/request_policy.rb
Defined Under Namespace
Classes: Scope
Instance Attribute Summary collapse
Instance Method Summary
collapse
#filter
Constructor Details
#initialize(user, record) ⇒ RequestPolicy
14
15
16
17
|
# File 'lib/proxes/policies/request_policy.rb', line 14
def initialize(user, record)
@user = user
@record = record
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_sym, *arguments, &block) ⇒ Object
19
20
21
22
23
24
|
# File 'lib/proxes/policies/request_policy.rb', line 19
def method_missing(method_sym, *arguments, &block)
return super if method_sym.to_s[-1] != '?'
return false if request.indices? && !index_allowed?
action_allowed? method_sym[0..-2].upcase
end
|
Instance Attribute Details
#record ⇒ Object
Also known as:
request
Returns the value of attribute record.
11
12
13
|
# File 'lib/proxes/policies/request_policy.rb', line 11
def record
@record
end
|
#user ⇒ Object
Returns the value of attribute user.
11
12
13
|
# File 'lib/proxes/policies/request_policy.rb', line 11
def user
@user
end
|
Instance Method Details
#action_allowed?(action) ⇒ Boolean
37
38
39
40
41
42
43
|
# File 'lib/proxes/policies/request_policy.rb', line 37
def action_allowed?(action)
patterns_for(action).each do |permission|
return true if request.path =~ /#{permission.pattern}/
end
false
end
|
#index_allowed? ⇒ Boolean
30
31
32
33
34
35
|
# File 'lib/proxes/policies/request_policy.rb', line 30
def index_allowed?
patterns = patterns_for('INDEX').map do |permission|
permission.pattern.gsub(/\{user.(.*)\}/) { |_match| user.send(Regexp.last_match[1].to_sym) }
end
filter(request.index, patterns).count > 0
end
|
#logger ⇒ Object
50
51
52
|
# File 'lib/proxes/policies/request_policy.rb', line 50
def logger
@logger ||= Ditty::Services::Logger.instance
end
|
#patterns_for(action) ⇒ Object
45
46
47
48
|
# File 'lib/proxes/policies/request_policy.rb', line 45
def patterns_for(action)
return Permission.for_user(user, action) if user
[]
end
|
#respond_to_missing?(name, _include_private = false) ⇒ Boolean
26
27
28
|
# File 'lib/proxes/policies/request_policy.rb', line 26
def respond_to_missing?(name, _include_private = false)
name[-1] == '?'
end
|