diff options
author | Jacob Vosmaer <contact@jacobvosmaer.nl> | 2014-03-14 08:53:46 +0100 |
---|---|---|
committer | Jacob Vosmaer <contact@jacobvosmaer.nl> | 2014-03-14 08:53:46 +0100 |
commit | af53aa9072ae355b6de167b0d20f9b87195131ec (patch) | |
tree | 79e8de874a6f0489b11d5ce31c2910b7cffe93c4 | |
parent | 5a616649b549eafc082ad876ac086da8945217f2 (diff) | |
download | gitlab-ce-af53aa9072ae355b6de167b0d20f9b87195131ec.tar.gz |
Add Gitlab::LDAP::Adapter.open
This new method is based on Net::LDAP.open, which reuses a single LDAP
connection.
-rw-r--r-- | lib/gitlab/ldap/adapter.rb | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/gitlab/ldap/adapter.rb b/lib/gitlab/ldap/adapter.rb index a7b5bcb207c..983a2956a35 100644 --- a/lib/gitlab/ldap/adapter.rb +++ b/lib/gitlab/ldap/adapter.rb @@ -3,7 +3,17 @@ module Gitlab class Adapter attr_reader :ldap - def initialize + def self.open(&block) + Net::LDAP.open(adapter_options) do |ldap| + block.call(self.new(ldap)) + end + end + + def self.config + Gitlab.config.ldap + end + + def self.adapter_options encryption = config['method'].to_s == 'ssl' ? :simple_tls : nil options = { @@ -23,8 +33,12 @@ module Gitlab if config['password'] || config['bind_dn'] options.merge!(auth_options) end + options + end + - @ldap = Net::LDAP.new(options) + def initialize(ldap=nil) + @ldap = ldap || Net::LDAP.new(self.class.adapter_options) end def users(field, value) @@ -65,7 +79,7 @@ module Gitlab private def config - @config ||= Gitlab.config.ldap + @config ||= self.class.config end end end |