class Authorization::DevelopmentSupport::ChangeAnalyzer::Approach
Attributes
engine[R]
steps[R]
users[R]
Public Class Methods
new(engine, users, steps)
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 97 def initialize (engine, users, steps) @engine, @users, @steps = engine, users, steps end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 141 def <=> (other) sort_value <=> other.sort_value end
changes()
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 112 def changes @steps.select {|step| step.length > 1} end
check(approach_checker)
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 101 def check (approach_checker) res = approach_checker.check(@engine, @users) @failed_test_count = approach_checker.failed_test_count #puts "CHECKING #{inspect} (#{res}, #{sort_value})" res end
clone_for_step(*step_params)
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 108 def clone_for_step (*step_params) self.class.new(@engine.clone, @users.clone, @steps + [Step.new(step_params)]) end
inspect()
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 135 def inspect "Approach (#{state_hash}): Steps: #{changes.map(&:inspect) * ', '}"# + # "\n Roles: #{AnalyzerEngine.roles(@engine).map(&:to_sym).inspect}; " + # "\n Users: #{@users.map(&:role_symbols).inspect}" end
sort_value()
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 131 def sort_value (changes.length + 1) + steps.length / 2 + (@failed_test_count.to_i + 1) end
state_hash()
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 121 def state_hash @engine.auth_rules.inject(0) do |memo, rule| memo + rule.privileges.hash + rule.contexts.hash + rule.attributes.hash + rule.role.hash end + @users.inject(0) {|memo, user| memo + user.role_symbols.hash } + @engine.privileges.hash + @engine.privilege_hierarchy.hash + @engine.roles.hash + @engine.role_hierarchy.hash end
subset?(other_approach)
click to toggle source
# File lib/declarative_authorization/development_support/change_analyzer.rb, line 116 def subset? (other_approach) other_approach.changes.length >= changes.length && changes.all? {|step| other_approach.changes.any? {|step_2| step_2.eql?(step)} } end