Skip to content

Instantly share code, notes, and snippets.

@imjn
Created August 15, 2018 13:56
Show Gist options
  • Save imjn/23796f304ed54679aa6ebd711b8f57e8 to your computer and use it in GitHub Desktop.
Save imjn/23796f304ed54679aa6ebd711b8f57e8 to your computer and use it in GitHub Desktop.
Laravel Socialite login sample
<?php
namespace App;
use Laravel\Socialite\Contracts\User as ProviderUser;
class SocialAccountsService
{
public function findOrCreate(ProviderUser $providerUser, $provider)
{
$account = LinkedSocialAccount::whereProviderName($provider)
->whereProviderId($providerUser->getId())
->first();
if ($account) {
return $account->user;
} else {
if ($providerUser->getEmail()) {
$user = User::whereEmail($providerUser->getEmail())->first();
if (! $user) {
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName(),
]);
}
$user->accounts()->create([
'provider_id' => $providerUser->getId(),
'provider_name' => $provider,
]);
return $user;
} else {
// emailがなかったら
$user = User::create([
'email' => $providerUser->getEmail(),
'name' => $providerUser->getName(),
]);
$user->accounts()->create([
'provider_id' => $providerUser->getId(),
'provider_name' => $provider,
]);
return $user;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment