summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Vosmaer <contact@jacobvosmaer.nl>2014-03-14 08:53:46 +0100
committerJacob Vosmaer <contact@jacobvosmaer.nl>2014-03-14 08:53:46 +0100
commitaf53aa9072ae355b6de167b0d20f9b87195131ec (patch)
tree79e8de874a6f0489b11d5ce31c2910b7cffe93c4
parent5a616649b549eafc082ad876ac086da8945217f2 (diff)
downloadgitlab-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.rb20
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