Class: Concealer::Strategy::MultiLevel
- Inherits:
-
Concealer::Strategy
- Object
- Concealer::Strategy
- Concealer::Strategy::MultiLevel
- Defined in:
- lib/concealer/strategy/multi_level.rb
Instance Method Summary collapse
- #allow?(model, method, args) ⇒ Boolean
-
#initialize(current_user, levels) ⇒ MultiLevel
constructor
A new instance of MultiLevel.
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
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 |