/** * Merge Socialite user with an existing user. * * @param User $user * @param SocialiteUser $socialiteUser * @param $provider * @return User */ protected function mergeSocialiteUser(User $user, SocialiteUser $socialiteUser, $provider) { $user->nickname = $user->nickname ?: $socialiteUser->nickname; $user->avatar = $user->avatar ?: (isset($socialiteUser->avatar) && !empty($socialiteUser->avatar) ? AvatarController::makeAvatarFromUrl($socialiteUser->avatar) : null); $user->social_provider_type = $provider; $user->social_provider_id = $socialiteUser->getId(); $user->is_verified = true; $user->save(); return $user; }
/** * @param $provider * @param AbstractUser $providerUser * * @return User * * @internal param \Laravel\Socialite\Two\User $user */ public function create($provider, AbstractUser $providerUser) { $name = explode(' ', $providerUser->getName()); $userData = ['first_name' => $name[0], 'last_name' => isset($name[1]) ? $name[1] : '', 'email' => $providerUser->getEmail(), 'avatar' => $providerUser->getAvatar(), 'status' => User::STATUS_CONFIRMED]; DB::beginTransaction(); $user = $this->registrar->create($userData); $userProvider = App::make(UserProvider::class, [['provider' => $provider, 'provider_id' => $providerUser->getId()]]); $user->providers()->save($userProvider); DB::commit(); return $user; }
/** * Create a new profile from Github data. * * @param \Laravel\Socialite\AbstractUser $userDetails * @param \App\User $user * @param string $token * * @return \App\Profile */ public function createFromGithubData(OAuthUser $details, User $user, $token) { $profile = $this->getNew(); $profile->uid = $details->getId(); $profile->username = $details->getNickname(); $profile->name = $details->getName(); $profile->email = $details->getEmail(); $profile->location = $details['location']; $profile->description = $details['blog']; $profile->image_url = $details->getAvatar(); $profile->access_token = $details->token; $profile->user_id = $user->id; $profile->save(); return $profile; }
public function addSocial(AbstractUser $socialUser, $provider) { $refreshToken = isset($socialUser->refreshToken) && $socialUser->refreshToken ? $socialUser->refreshToken : null; $this->socials()->create(['provider' => $provider, 'social_id' => $socialUser->getId(), 'email' => $socialUser->getEmail(), 'avatar' => $socialUser->getAvatar(), 'token' => $socialUser->token, 'refresh_token' => $refreshToken, 'expires_in' => $socialUser->expiresIn]); }
public function updateFromProvider(AbstractUser $socialUser, $provider) { $refreshToken = isset($socialUser->refreshToken) && $socialUser->refreshToken ? $socialUser->refreshToken : null; $attributes = ['user_id' => $this->user_id, 'provider' => $provider, 'social_id' => $socialUser->getId(), 'email' => $socialUser->getEmail(), 'avatar' => $socialUser->getAvatar(), 'token' => $socialUser->token, 'refresh_token' => $refreshToken, 'expires_in' => $socialUser->expiresIn]; $this->updateOrCreate(array_only($attributes, ['user_id', 'provider', 'email']), $attributes); }