Class: Ldumbd::LdapTree

Inherits:
Object
  • Object
show all
Defined in:
lib/ldumbd/ldap_tree.rb

Instance Method Summary collapse

Constructor Details

#initialize(basedn) ⇒ LdapTree

Returns a new instance of LdapTree.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ldumbd/ldap_tree.rb', line 13

def initialize(basedn)
  @basedn = basedn
  /\Adc=(?<dc>[^,]*)/ =~ basedn
  root = TreeObject.new({ 'dn_prefix' => '',
                          'dc' => dc,
                          'objectClass' => ['top', 'domain']})
  people = TreeObject.new({ 'dn_prefix' => 'ou=People',
                            'ou' => 'People',
                            'objectClass' => ['top',
                                              'organizationalUnit'] })
  groups = TreeObject.new({ 'dn_prefix' => 'ou=Groups',
                            'ou' => 'Groups',
                            'objectClass' => ['top',
                                              'organizationalUnit'] })
  root.children << people
  root.children << groups
  people.children << User
  groups.children << Group

  @tree = Hash[
               [root, people, groups].map do |object|
                 dn_prefix = object.attributes['dn_prefix']
                 [dn(dn_prefix), object]
               end
              ]
end

Instance Method Details

#dn(dn_prefix) ⇒ Object



40
41
42
# File 'lib/ldumbd/ldap_tree.rb', line 40

def dn(dn_prefix)
  [dn_prefix, @basedn].reject(&:empty?).join(',')
end

#find_by_dn(dn) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/ldumbd/ldap_tree.rb', line 5

def find_by_dn(dn)
  object = @tree[dn]
  unless object
    object = TreeObject.by_dn(@basedn, dn)
  end
  object or raise LDAP::ResultError::NoSuchObject
end