diff --git a/app/controllers/redmine_oauth_controller.rb b/app/controllers/redmine_oauth_controller.rb index dfb32cff0ce9cb46ab8a70bafe5df2357a76bead..416552665d52931b0cd2ab86e7adb3bba286fc34 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