Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Ruby
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
conf
lib
test
README.rdoc
Rakefile

README.rdoc

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.

Something went wrong with that request. Please try again.