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