class Soar::Registry::Identity::Provider::Staff::Uuid

Public Class Methods

new(identity_directory:, role_directory:) click to toggle source

@param [Soar::Registry::Directory] identity_directory @param [Soar::Registry::Directory] role_directory

# File lib/soar/registry/identity/provider/staff/uuid.rb, line 15
def initialize(identity_directory:, role_directory:)
  @identity_directory = identity_directory
  @role_directory = role_directory
end

Public Instance Methods

calculate_all_attributes(identity_uuid) click to toggle source

@param [String] identity_uuid @return [Hash{String => String, Number, Hash, Array}] A hash of attributes

# File lib/soar/registry/identity/provider/staff/uuid.rb, line 68
def calculate_all_attributes(identity_uuid)
  begin
    role_entries = @role_directory.directory.search(@role_directory.search_index, identity_uuid)
    roles = {}
    role_entries.each { |role_entry|
      roles[role_entry['identity_role']] = role_entry.key?('identity_role_attributes') ? role_entry['identity_role_attributes'] : {}
    }
    identity = @identity_directory.directory.fetch(identity_uuid)
    attributes = {}
    attributes["identity_uuid"] = identity_uuid 
    attributes["firstname"] = identity['givenName'] if identity.key?('givenName')
    attributes["lastname"] = identity['sn'] if identity.key?('sn')
    attributes["email"] = identity['mail'] if identity.key?('mail')
    attributes["roles"] = roles
    return attributes
  rescue Soar::Registry::Directory::Error::NoEntriesFoundError => e
    raise SoarIdm::IdentityError, e.message
  end
end
calculate_attributes(identity_uuid, role) click to toggle source

@param [String] identity_uuid @param [String] role @return [Hash{String => String, Number, Hash, Array}] A hash of attributes

# File lib/soar/registry/identity/provider/staff/uuid.rb, line 52
def calculate_attributes(identity_uuid, role)
  primary_key = {
    @role_directory.fetch_index[0] => identity_uuid,
    @role_directory.fetch_index[1] => role
  }
  result = @role_directory.directory.fetch(primary_key)
  attributes = {
    role => result.key?('identity_role_attributes') ? result['identity_role_attributes'] : {}
  }
  return attributes
end
calculate_identifiers(identity) click to toggle source

@param [Hash{String => String, Number}] identity @return [Array<String,Number>] list of identifiers

# File lib/soar/registry/identity/provider/staff/uuid.rb, line 38
def calculate_identifiers(identity)
  indexes = @identity_directory.directory.index
  identifiers = []
  indexes.each { |index| 
    identifiers << identity[index.to_s]
  }
  identifiers
end
calculate_identities(identity_uuid) click to toggle source

@param [String] identity_uuid @return [Array<String>] identifiers @raise [Soar::Registry::Directory::Error::NoEntriesFoundError]

# File lib/soar/registry/identity/provider/staff/uuid.rb, line 93
def calculate_identities(identity_uuid)
  return [identity_uuid]
end
calculate_roles(identity_uuid) click to toggle source

@param [String] identity_uuid @return [Array<String>] list of roles

# File lib/soar/registry/identity/provider/staff/uuid.rb, line 24
def calculate_roles(identity_uuid)
  entries = @role_directory.directory.search(@role_directory.search_index, identity_uuid)
  roles = []
  entries.each do |entry|
    identity_source = entry['identity_source'] if entry.key?('identity_source') 
    roles << entry[@role_directory.fetch_index[1]]
  end
  return roles
end