From 089605fe6b9850ff87e1b1535d084b73e305d627 Mon Sep 17 00:00:00 2001
From: Izaak Alpert <ialpert@blackberry.com>
Date: Tue, 11 Jun 2013 17:15:59 -0400
Subject: [PATCH] Allow the ldap logins with email or username

Change-Id: I73b4aa4c46afd56ae02fb24abcd673c0724547e4
---
 config/gitlab.yml.example     | 1 +
 config/initializers/devise.rb | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index ad24ba97c6f..b6a8e68bf8e 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -97,6 +97,7 @@ production: &base
     method: 'ssl' # "ssl" or "plain"
     bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
     password: '_the_password_of_the_bind_user'
+    allow_username_or_email_login: true
 
   ## OmniAuth settings
   omniauth:
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index e0938a9640c..52f757fdc94 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -206,6 +206,12 @@ Devise.setup do |config|
   # end
 
   if Gitlab.config.ldap.enabled
+    if Gitlab.config.ldap.allow_username_or_email_login
+      email_stripping_proc = Proc.new {|name| name.gsub(/@.*$/,'')}
+    else
+      email_stripping_proc = lambda {|n|n}
+
+    end
     config.omniauth :ldap,
       host:     Gitlab.config.ldap['host'],
       base:     Gitlab.config.ldap['base'],
@@ -213,7 +219,8 @@ Devise.setup do |config|
       port:     Gitlab.config.ldap['port'],
       method:   Gitlab.config.ldap['method'],
       bind_dn:  Gitlab.config.ldap['bind_dn'],
-      password: Gitlab.config.ldap['password']
+      password: Gitlab.config.ldap['password'],
+      name_proc: email_stripping_proc
   end
 
   Gitlab.config.omniauth.providers.each do |provider|
-- 
GitLab