-
Notifications
You must be signed in to change notification settings - Fork 0
/
activeldap.rb
29 lines (24 loc) · 947 Bytes
/
activeldap.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
require 'active_ldap'
ActiveLdap::Base.setup_connection :host => 'localhost', :base => 'dc=nodomain',
:bind_dn => 'cn=admin,dc=nodomain', :password => 'admin'
class Group < ActiveLdap::Base
ldap_mapping :dn_attribute => 'cn',
:prefix => 'ou=groups', :classes => ['top', 'groupOfNames'],
:scope => :one
has_many :members,
:class_name => "User",
:wrap => "member"
end
class User < ActiveLdap::Base
ldap_mapping :dn_attribute => 'cn', :prefix => 'ou=users', :classes => ['top', 'inetorgperson']
belongs_to :groups, :class_name => 'Group', :foreign_key=> "dn", :primary_key => 'member'
end
user1 = User.find 'user1'
puts "Found: #{user1.cn} #{user1.sn}"
user1.groups.all.each {|group| puts " Group: #{group.cn}"}
puts "\n\n"
rubyists = Group.find 'rubyists'
puts "Found Group: #{rubyists.dn}"
rubyists.members.each do|member|
puts " Member: #{member.cn} #{member.sn}"
end