diff --git a/app/Ninja/OAuth/OAuth.php b/app/Ninja/OAuth/OAuth.php index ae394775d9b5..647d372a5819 100644 --- a/app/Ninja/OAuth/OAuth.php +++ b/app/Ninja/OAuth/OAuth.php @@ -1,10 +1,17 @@ providerInstance = new Providers\Google(); + $this->providerId = self::SOCIAL_GOOGLE; return $this; default: @@ -26,11 +34,16 @@ class OAuth { public function getTokenResponse($token) { - $email = null; $user = null; + $payload = $this->providerInstance->getTokenResponse($token); + $oauthUserId = $this->providerInstance->harvestSubField($payload); + + LookupUser::setServerByField('oauth_user_key', $this->providerId . '-' . $oauthUserId); + if($this->providerInstance) - $user = User::where('oauth_user_id', $this->providerInstance->getTokenResponse($token))->first(); + $user = User::where('oauth_user_id', $oauthUserId)->where('oauth_provider_id', $this->providerId)->first(); + if ($user) return $user; diff --git a/app/Ninja/OAuth/Providers/Google.php b/app/Ninja/OAuth/Providers/Google.php index 996ac8b8e48e..17b9cb7ef912 100644 --- a/app/Ninja/OAuth/Providers/Google.php +++ b/app/Ninja/OAuth/Providers/Google.php @@ -7,11 +7,7 @@ class Google implements ProviderInterface { $client = new \Google_Client(['client_id' => env('GOOGLE_CLIENT_ID','')]); - $payload = $client->verifyIdToken($token); - if ($payload) - return $this->harvestSubField($payload); - else - return null; + return $client->verifyIdToken($token); } public function harvestEmail($payload) @@ -19,7 +15,7 @@ class Google implements ProviderInterface return $payload['email']; } - private function harvestSubField($payload) + public function harvestSubField($payload) { $data = $payload->getAttributes(); return $data['payload']['sub']; // user ID