class Soar::Registry::Staff::Identity::Base

Constants

PRIMARY_KEY

Attributes

client[R]
directory[R]
translator[R]

Public Class Methods

new(configuration) click to toggle source

@param [Hash] configuration

for example see config/config.yml
# File lib/soar/registry/staff/identity/base.rb, line 22
def initialize(configuration)
  @translator = configuration.key?('translator') ? Object.const_get(configuration['translator']['class']).new : Soar::Registry::Staff::Translator::Default.new
  @directory = Object::const_get(configuration['provider']['class']).new
  @directory.bootstrap(configuration['provider']['config'])
  @directory.authenticate(configuration['provider']['credentials'])
  @client = @directory.connect
  raise Soar::Registry::Staff::Directory::Error::BootstrapError if not @directory.bootstrapped? 
  raise Soar::Registry::Staff::Directory::Error::ConnectionError if not @directory.connected?
  raise Soar::Registry::Staff::Directory::Error::NotReadyError if not @directory.ready?
end

Public Instance Methods

calculate_all_attributes(identity) click to toggle source

@param [Hash] identity @return [Hash] Hash of attributes keyed by role

# File lib/soar/registry/staff/identity/base.rb, line 76
def calculate_all_attributes(identity)
  entry = @directory.fetch_identity(identity[PRIMARY_KEY])
  @translator.get_identity(entry)
end
calculate_attributes(identity, role) click to toggle source

@param [Hash] identity @param [String] role @return [Hash] A hash of attributes

# File lib/soar/registry/staff/identity/base.rb, line 66
def calculate_attributes(identity, role)
  entry = @directory.fetch_identity(identity[PRIMARY_KEY])
  return nil if not entry
  identity = @translator.get_identity(entry)
  { role => identity['roles'][role] }
end
calculate_identifiers(identity) click to toggle source

@param [Hash] identity @return [Array] list of identifiers

# File lib/soar/registry/staff/identity/base.rb, line 51
def calculate_identifiers(identity)
  indexes = @directory.indexed_attributes
  entry = @directory.fetch_identity(identity[PRIMARY_KEY])
  identity = @translator.get_identity(entry)
  identifiers = []
  indexes.each { |index| 
    identifiers << identity[index]
  }
  identifiers
end
calculate_roles(identity) click to toggle source

@param [Hash] identity @return [Array] list of roles

# File lib/soar/registry/staff/identity/base.rb, line 36
def calculate_roles(identity)
  entry = @directory.fetch_identity(identity[PRIMARY_KEY])
  return nil if not entry
  identity = @translator.get_identity(entry)
  roles = []
  identity['roles'].each do |role, attributes|
    roles << role
  end
  roles
end