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