ldap.rb 760 Bytes
require 'net/ldap'

class DsAdmin::Storage::Ldap
  include DsAdmin::Storage

  def initialize(config)
    super(config)
    @ldap = Net::LDAP.new(@config.con(self))
  end

  def read
    query = @config.query(self)

    ##
    # two things.
    # - create a hash from the ldap search result
    # - map the id's from the ldap search resulte into id's used in
    #   the models. The mapping is read from the config.
    #
    foo = @ldap.search(query).map do |data|
      map = { :dn => :id }
      map.merge!(@config.map(self))

      remapped = Hash.new
      data.each do |key,value|
        key   = map[key] || key
        value = value.size==1 ? value[0] : value.to_a 

        remapped.merge!({ key => value })
      end
      remapped
    end
  end
end