/** * @param string $provider * @param OAuth2User $user * @return User */ public function getByOAuthUser($provider, OAuth2User $oauthUser) { $profile = $this->profileRepository->findOneBySocialId($provider, $oauthUser->getId()); if ($profile) { $profile->mergeFromOAuth($oauthUser); $this->profileRepository->update($profile); return $profile->getUser(); } if ($oauthUser->getEmail() == '') { return null; } if ($user = $this->repository->findOneByEmail($oauthUser->getEmail())) { $user->addProfile(SocialProfile::create($provider, $oauthUser, !$user->hasAnyProfile())); $this->repository->update($user); return $user; } }
/** * @param string $provider * @param OAuth2User $user * @param boolean $default * @return SocialProfile */ public static function create($provider, OAuth2User $user, $default = false) { $avatar = $user->getAvatar(); if (empty($avatar) && $user->getEmail() !== null) { $avatar = 'http://www.gravatar.com/avatar/' . md5($user->getEmail()); } $profile = new static(); $profile->setProvider($provider); $profile->setSocialId($user->getId()); $profile->setName($user->getName()); $profile->setEmail($user->getEmail()); $profile->setUsername($user->getUsername()); $profile->setAvatar($avatar); $profile->setDefault($default); return $profile; }