$socialite_user->getId(), 'oauth_provider_id'=>$provider, ]; if ($user = MultiDB::hasUser($query)) { return $user; } else { return false; } } /* Splits a socialite user name into first and last names */ public static function splitName($name) { $name = trim($name); $last_name = (strpos($name, ' ') === false) ? '' : preg_replace('#.*\s([\w-]*)$#', '$1', $name); $first_name = trim(preg_replace('#'.preg_quote($last_name, '/').'#', '', $name)); return [$first_name, $last_name]; } public static function providerToString(int $social_provider) : string { switch ($social_provider) { case SOCIAL_GOOGLE: return 'google'; case SOCIAL_FACEBOOK: return 'facebook'; case SOCIAL_GITHUB: return 'github'; case SOCIAL_LINKEDIN: return 'linkedin'; case SOCIAL_TWITTER: return 'twitter'; case SOCIAL_BITBUCKET: return 'bitbucket'; case SOCIAL_MICROSOFT: return 'microsoft'; } } public static function providerToInt(string $social_provider) : int { switch ($social_provider) { case 'google': return SOCIAL_GOOGLE; case 'facebook': return SOCIAL_FACEBOOK; case 'github': return SOCIAL_GITHUB; case 'linkedin': return SOCIAL_LINKEDIN; case 'twitter': return SOCIAL_TWITTER; case 'bitbucket': return SOCIAL_BITBUCKET; case 'microsoft': return SOCIAL_MICROSOFT; } } public function getProvider($provider) { switch ($provider) { case 'google': $this->provider_instance = new Google(); $this->provider_id = self::SOCIAL_GOOGLE; return $this; default: return null; break; } } public function getTokenResponse($token) { $user = false; $payload = $this->provider_instance->getTokenResponse($token); $oauth_user_id = $this->provider_instance->harvestSubField($payload); $data = [ 'oauth_user_id' => $oauth_user_id, 'oauth_provider_id' => $this->provider_id, ]; if ($this->provider_instance) { $user = MultiDB::hasUser($data); } return $user; } }