/**
  * @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;
     }
 }
Example #2
0
 /**
  * @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;
 }