From f93e2029b6194cc3450ed20b162316516cbc8900 Mon Sep 17 00:00:00 2001 From: Giovanne Marcelo <gms15@inf.ufpr.br> Date: Fri, 24 Mar 2017 12:06:31 -0300 Subject: [PATCH] hotfix in oauth login --- .../v1/omniauth_callbacks_controller.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/controllers/v1/omniauth_callbacks_controller.rb b/app/controllers/v1/omniauth_callbacks_controller.rb index d5989d547..c49c15e79 100644 --- a/app/controllers/v1/omniauth_callbacks_controller.rb +++ b/app/controllers/v1/omniauth_callbacks_controller.rb @@ -77,13 +77,23 @@ require 'open-uri' # break out provider attribute assignment for easy method extension def assign_provider_attrs(user, auth_hash) - avatar = auth_hash['provider']=='google_oauth2' ? open(auth_hash['info']['image']) : auth_hash['info']['image'] + + email = auth_hash['info']['email'] + avatar = auth_hash['info']['image'] + + # Duplicate emails when logging via facebook and google cause API to crash + # Add +google_oauth2 to google logins to avoid duplication (workaround!!) + # Google ignore strings after '+' until '@gmail.com' (wow!!!) + if auth_hash['provider']=='google_oauth2' + email = auth_hash['info']['email'].split('@')[0] + '+' + auth_hash['provider'] + '@' + auth_hash['info']['email'].split('@')[1] + avatar = open(auth_hash['info']['image']) + end user.assign_attributes({ nickname: auth_hash['info']['nickname'], name: auth_hash['info']['name'], avatar: avatar, - email: auth_hash['info']['email'] + auth_hash['provider'] + email: email }) end -- GitLab