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