Skip to content

Instantly share code, notes, and snippets.

@wichaksono
Created March 10, 2018 02:52
Show Gist options
  • Save wichaksono/0a7442f0f35da4b819a03fcb5ea06df8 to your computer and use it in GitHub Desktop.
Save wichaksono/0a7442f0f35da4b819a03fcb5ea06df8 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Traits;
use App\User;
use App\Models\SocialAccount;
use Laravel\Socialite\Contracts\User as ProviderUser;
trait SocialCheckService
{
protected function checkUser(ProviderUser $providerUser, $provider)
{
$account = SocialAccount::whereProvider($provider)
->whereProviderUserId($providerUser->getId())
->first();
if ($account){
$this->updateIfExistUser($providerUser, $account->user);
return $account->user;
}else{
$existEmail = User::whereEmail($providerUser->getEmail())->first();
if($existEmail){
$this->updateIfExistUser($providerUser, $existEmail);
$user = $existEmail;
}else{
$user = User::firstOrCreate([
'name' => $providerUser->getName(),
'email' => $providerUser->getEmail(),
'avatar' => $providerUser->getAvatar(),
]);
}
$account = $user->socialAccount()->create([
'provider_user_id' => $providerUser->getId(),
'provider' => $provider,
]);
}
return $user;
}
// Jika emailnya pernah daftar update user where email sama dengan yang login
private function updateIfExistUser($providerUser, $existEmail)
{
$existEmail->update([
'name' => $providerUser->getName(),
'avatar' => $providerUser->getAvatar(),
]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment