Module: ProxES::Helpers::Indices

Included in:
RequestPolicy, RequestPolicy::Scope
Defined in:
lib/proxes/helpers/indices.rb

Instance Method Summary collapse

Instance Method Details

#filter(asked, against) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/proxes/helpers/indices.rb', line 9

def filter(asked, against)
  return against.map { |a| a.gsub(/\.\*/, '*') } if asked == ['*'] || asked.blank?

  answer = []
  against.each do |pattern|
    answer.concat(asked.select { |idx| idx =~ /#{pattern}/ })
  end
  answer
end

#patternsObject



19
20
21
22
23
24
25
26
# File 'lib/proxes/helpers/indices.rb', line 19

def patterns
  current_user = user || Ditty::User.anonymous_user
  return [] if current_user.nil?
  patterns_for('INDEX').map do |permission|
    return nil if permission.pattern.blank?
    permission.pattern.gsub(/\{user.(.*)\}/) { |_match| current_user.send(Regexp.last_match[1].to_sym) }
  end.compact
end

#patterns_for(action) ⇒ Object



28
29
30
31
32
# File 'lib/proxes/helpers/indices.rb', line 28

def patterns_for(action)
  current_user = user || Ditty::User.anonymous_user
  return [] if current_user.nil?
  Permission.for_user(current_user, action)
end