Class: Concealer::Strategy::MultiLevel

Inherits:
Concealer::Strategy show all
Defined in:
lib/concealer/strategy/multi_level.rb

Instance Method Summary collapse

Constructor Details

#initialize(current_user, levels) ⇒ MultiLevel

Returns a new instance of MultiLevel.



3
4
5
6
# File 'lib/concealer/strategy/multi_level.rb', line 3

def initialize(current_user, levels)
  @current_user = current_user
  @levels = levels
end

Instance Method Details

#allow?(model, method, args) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
11
12
13
14
15
16
# File 'lib/concealer/strategy/multi_level.rb', line 8

def allow?(model, method, args)
  required_level = required_level_for(model, method, args)
  actual_level = @current_user.try(:relation_level_to, owner_of(model)) || @levels.last

  raise "The level #{required_level} is not valid." unless @levels.include?(required_level)
  raise "The level #{actual_level} is not valid."   unless @levels.include?(actual_level)

  return @levels.index(actual_level) <= @levels.index(required_level)
end