ldap-activerecord-gateway icon indicating copy to clipboard operation
ldap-activerecord-gateway copied to clipboard

= DEPRECATED

This plugin is no longer maintained. It was last tested against Rails from 2007.

= ldap-activerecord-gateway

This is an implementation of an LDAP server which uses active record as the data source. The server is read-only, and can serve information from any AR model that implements the #search(string) class method and the #to_ldap_entry instance method.

To use, configure the server by creating a conf/ldap-server.yml file (see ldap-server.example.yml). The important bits are rails_dir, active_record_model, basedn, and port. Once that's done, run "./bin/ldap-server.rb start", wait for it to daemonize, and check the log file under $RAILS_ROOT/log/ for errors. To stop, run "./bin/ldap-server.rb", and if you reconfigure the server or change the underlying AR model, restart it with "./bin/ldap-server.rb restart".

To test, point your addressbook (ie: Thunderbird or OS X Address Book) at the server and run a search.

Example AR class:

class Person < ActiveRecord::Base def fullname "#{firstname} #{lastname}" end

def to_ldap_entry
	{	
	  "objectclass"     => ["top", "person", "organizationalPerson", "inetOrgPerson", "mozillaOrgPerson"],
		"uid"             => ["tbotter-#{id}"],
		"sn"              => [lastname],
		"givenName"       => [firstname],
		"cn"              => [fullname],
		"title"           => [title],
		"o"               => [company], 
		"mail"            => [email],
		"telephonenumber" => [work_phone], 
		"homephone"       => [home_phone],
		"fax"             => [fax],
		"mobile"          => [mobile],
		"street"          => [address],
		"l"               => [city],
		"st"              => [state], 
		"postalcode"      => [zip], 
	}
end

def self.search(query)
  Person.find(:all, 
              :conditions => ["(email LIKE ?) OR (firstname LIKE ?) OR (lastname LIKE ?)", 
                              "#{query}%", "#{query}%", "#{query}%"])
end

end

Have fun.