Commit af53aa9072ae355b6de167b0d20f9b87195131ec

Authored by Jacob Vosmaer
1 parent 5a616649

Add Gitlab::LDAP::Adapter.open

This new method is based on Net::LDAP.open, which reuses a single LDAP
connection.
Showing 1 changed file with 17 additions and 3 deletions   Show diff stats
lib/gitlab/ldap/adapter.rb
@@ -3,7 +3,17 @@ module Gitlab @@ -3,7 +3,17 @@ module Gitlab
3 class Adapter 3 class Adapter
4 attr_reader :ldap 4 attr_reader :ldap
5 5
6 - def initialize 6 + def self.open(&block)
  7 + Net::LDAP.open(adapter_options) do |ldap|
  8 + block.call(self.new(ldap))
  9 + end
  10 + end
  11 +
  12 + def self.config
  13 + Gitlab.config.ldap
  14 + end
  15 +
  16 + def self.adapter_options
7 encryption = config['method'].to_s == 'ssl' ? :simple_tls : nil 17 encryption = config['method'].to_s == 'ssl' ? :simple_tls : nil
8 18
9 options = { 19 options = {
@@ -23,8 +33,12 @@ module Gitlab @@ -23,8 +33,12 @@ module Gitlab
23 if config['password'] || config['bind_dn'] 33 if config['password'] || config['bind_dn']
24 options.merge!(auth_options) 34 options.merge!(auth_options)
25 end 35 end
  36 + options
  37 + end
  38 +
26 39
27 - @ldap = Net::LDAP.new(options) 40 + def initialize(ldap=nil)
  41 + @ldap = ldap || Net::LDAP.new(self.class.adapter_options)
28 end 42 end
29 43
30 def users(field, value) 44 def users(field, value)
@@ -65,7 +79,7 @@ module Gitlab @@ -65,7 +79,7 @@ module Gitlab
65 private 79 private
66 80
67 def config 81 def config
68 - @config ||= Gitlab.config.ldap 82 + @config ||= self.class.config
69 end 83 end
70 end 84 end
71 end 85 end