cschiewek / devise_ldap_authenticatable

Devise Module for LDAP
MIT License
594 stars 359 forks source link

Multiple domains authentication #188

Open t33m opened 9 years ago

t33m commented 9 years ago

I'm trying to create multipleldap domains auth form for my app. I was added new text_filed in my auth form for new paramter ":company". Also I have two default params - ":login", ":password".

Also i configured my ldap.yml file like this:

development: company: 1st_COMPANY host: dc.1st_COMPANY.com port: 636 attribute: sAMAccountName base: dc=1st_COMPANY,dc=com admin_user: CN=admin,OU=group,DC=1st_COMPANY,DC=com admin_password: p@ssw0rd ssl: true company: 2nd_COMPANY host: dc.2nd_COMPANY.com port: 636 attribute: sAMAccountName base: dc=2nd_COMPANY,dc=com admin_user: CN=admin,OU=group,DC=1st_COMPANY,DC=com admin_password: p@ssw0rd ssl: true

Next I modified my devise_ldap_authenticatable-.8.1/lib/devise_ldap_authenticatable/ldap/connection.rb file:

module Devise module LDAP class Connection attr_reader :ldap, :login, :company def initialize(params = {}) @company = params[:company] ldap_configs = YAML.load(ERB.new(File.read(::Devise.ldap_config || "#{Rails.root}/config/ldap.yml")).result)[Rails.env] ldap_configs = ldap_configs.is_a?(Hash) ? [ldap_configs] : ldap_configs ldap_configs.each do |ldap_config| if @company == ldap_config["company"] ------------------------- # original method' code

But it didn't work. Param ":company" doesn't pass to def initialize(params = {}) method. Can anybody explain why?

Thanks!

faouzzz commented 8 years ago

params here is not like you think. It is a options hash sent from many methods in adaptater.rb

Devise::LDAP::Connection.new(options)