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