From bd76ca2e614101e97214f0bca6dadde2b75cad18 Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Fri, 2 Oct 2015 14:49:26 +0200
Subject: [PATCH] Match ouath email on user.login instead of user.email.
 Silently change the user.login for existing users to contain full email
 address.

---
 app/controllers/redmine_oauth_controller.rb | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/app/controllers/redmine_oauth_controller.rb b/app/controllers/redmine_oauth_controller.rb
index dfb32cf..4165526 100644
--- a/app/controllers/redmine_oauth_controller.rb
+++ b/app/controllers/redmine_oauth_controller.rb
@@ -38,8 +38,15 @@ class RedmineOauthController < AccountController
   def try_to_login info
    params[:back_url] = session[:back_url]
    session.delete(:back_url)
-   user = User.find_or_initialize_by_mail(info["email"])
-    if user.new_record?
+   by_mail = User.find_by_mail(info["email"])
+   by_login = User.find_by_login(info["email"])
+   if by_mail and !by_login
+      # Silently change login to full email address for existing users
+      by_mail.login = info["email"]
+      by_mail.save
+   end
+   user = User.find_or_initialize_by_login(info["email"])
+   if user.new_record?
       # Self-registration off
       redirect_to(home_url) && return unless Setting.self_registration?
       # Create on the fly
@@ -47,7 +54,7 @@ class RedmineOauthController < AccountController
       user.firstname ||= info[:given_name]
       user.lastname ||= info[:family_name]
       user.mail = info["email"]
-      user.login = parse_email(info["email"])[:login]
+      user.login = info["email"]
       user.login ||= [user.firstname, user.lastname]*"."
       user.random_password
       user.register
-- 
GitLab