Class: CanTango::PermissionEngine::Evaluator

Inherits:
Object
  • Object
show all
Includes:
Rules
Defined in:
lib/cantango/permission_engine/evaluator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Rules::Dsl

included, #scope

Constructor Details

#initialize(ability, rule) ⇒ Evaluator

Returns a new instance of Evaluator.



8
9
10
11
12
# File 'lib/cantango/permission_engine/evaluator.rb', line 8

def initialize ability, rule
  @ability = ability
  @rule = rule
  safe_rules!
end

Instance Attribute Details

#abilityObject (readonly)

Returns the value of attribute ability.



4
5
6
# File 'lib/cantango/permission_engine/evaluator.rb', line 4

def ability
  @ability
end

#ruleObject (readonly)

Returns the value of attribute rule.



4
5
6
# File 'lib/cantango/permission_engine/evaluator.rb', line 4

def rule
  @rule
end

Instance Method Details

#evaluate!(user) ⇒ Object



14
15
16
17
18
# File 'lib/cantango/permission_engine/evaluator.rb', line 14

def evaluate! user
  @user = user
  instance_eval rule.can if rule.can?
  instance_eval rule.cannot if rule.cannot?
end

#rulesObject



20
21
22
# File 'lib/cantango/permission_engine/evaluator.rb', line 20

def rules
  ability.send :rules
end

#safe_rules!Object



28
29
30
31
# File 'lib/cantango/permission_engine/evaluator.rb', line 28

def safe_rules!
  rule.can.gsub!(/(User|UserAccount)/,'::\1') if rule.can?
  rule.cannot.gsub!(/(User|UserAccount)/,'::\1') if rule.cannot?
end

#userObject



24
25
26
# File 'lib/cantango/permission_engine/evaluator.rb', line 24

def user
  @user
end