Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 conf
Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 README.rdoc
Octocat-spinner-32 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.