Im having difficulties setting up my controller to connect to our ldap server. I've searched around in google and found wikis of snippets of some code to set ruby ldap. Below is what I currently have but Im getting "uninitialized constant LDAP" when I try to access the login. Im not what what Im missing or how to debug this. Any suggestions or tips is appreciated.
class LoginController < ApplicationController
#Bind with the main credential and query the full DN of the email address #given to us as a parameter, then unbind and rebind as the user. def self.authenticate(username,password) logger.debug("username = " + username)
ldap_con = initialize_ldap_con(username,password) treebase = "DC=domain,DC=domainext" mail_filter = Net::LDAP::Filter.eq( "mail", '...@test.com' ) op_filter = Net::LDAP::Filter.eq( "objectClass", "organizationalPerson" ) dn = String.new ldap_con.search( :base => treebase, :filter => op_filter & mail_filter, :attributes=> 'dn') do |entry| dn = entry.dn end login_succeeded = false unless dn.empty? ldap_con = initialize_ldap_con(dn,password) login_succeeded = true if ldap_con.bind end logger.debug("login_succeeded = " + login_succeeded) login_succeeded end
private def self.initialize_ldap_con(user_name, password) Net::LDAP.new( {:host => 'hostnamehere', :port => 389, :auth => { :method => :simple, :username => user_name, :password => password }} ) end
def index case @request.method when :post if @session['user'] = LoginController.authenticate(@params['user_login'], @params['user_password'])
flash['notice'] = "Login successful" redirect_back_or_default :action => "overview" else @login = @params['user_login'] @message = "Login unsuccessful" end end end end