Class: CanTango::PermitEngine

Inherits:
Engine
  • Object
show all
Defined in:
lib/cantango/permit_engine.rb,
lib/cantango/permit_engine/util.rb,
lib/cantango/permit_engine/finder.rb,
lib/cantango/permit_engine/builder.rb,
lib/cantango/permit_engine/factory.rb,
lib/cantango/permit_engine/executor.rb,
lib/cantango/permit_engine/builder/base.rb,
lib/cantango/permit_engine/role_matcher.rb,
lib/cantango/permit_engine/compatibility.rb,
lib/cantango/permit_engine/executor/base.rb,
lib/cantango/permit_engine/executor/system.rb,
lib/cantango/permit_engine/executor/abstract.rb,
lib/cantango/permit_engine/builder/special_permits.rb

Defined Under Namespace

Modules: Builder, Compatibility, Executor, RoleMatcher, Util Classes: Factory, Finder

Instance Attribute Summary

Attributes inherited from Engine

#ability

Instance Method Summary collapse

Methods included from Helpers::Debug

#debug

Constructor Details

#initialize(ability) ⇒ PermitEngine

Returns a new instance of PermitEngine.



6
7
8
# File 'lib/cantango/permit_engine.rb', line 6

def initialize ability
  super
end

Instance Method Details

#engine_nameObject



21
22
23
# File 'lib/cantango/permit_engine.rb', line 21

def engine_name
  :permit
end

#execute!Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/cantango/permit_engine.rb', line 10

def execute!
  return if !valid?
  debug "Permit Engine executing..."

  # CanTango.config.permits.clear_executed! # should there be an option clear before each execution?
  permits.each do |permit|
    CanTango.config.permits.was_executed(permit, ability) if CanTango.config.debug.on?
    break if permit.execute == :break
  end
end

#permit_class_namesObject



37
38
39
# File 'lib/cantango/permit_engine.rb', line 37

def permit_class_names
  @permit_class_names ||= permits.map{|p| p.class.to_s}
end

#permitsObject

by default, only execute permits for which the user has a role or a role group also execute any permit marked as special



33
34
35
# File 'lib/cantango/permit_engine.rb', line 33

def permits
  @permits ||= permit_factory.build!
end

#valid?Boolean

Returns:

  • (Boolean)


25
26
27
28
# File 'lib/cantango/permit_engine.rb', line 25

def valid?
  return false if !valid_mode?
  permits.empty? ? invalid : true
end