Skip to content

Instantly share code, notes, and snippets.

@WyattCast44
Created March 23, 2019 22:13
Show Gist options
  • Save WyattCast44/38aa556028ddcfb50c68165ea3403740 to your computer and use it in GitHub Desktop.
Save WyattCast44/38aa556028ddcfb50c68165ea3403740 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use Socialite;
use App\Http\Controllers\Controller;
class ProviderLoginController extends Controller
{
public function redirectToProvider()
{
return Socialite::driver('provider')->redirect();
}
public function handleProviderCallback()
{
try {
$provider_user = Socialite::driver('provider')->user();
} catch (\Exception $e) {
return redirect()->route('login');
}
$existingUser = User::where('email', $provider_user->getEmail())->first();
if ($existingUser) {
// Update the user access token
$existingUser->access_token = $provider_user->token;
$existingUser->save();
// Log the user in
auth()->login($existingUser, true);
} else {
$newUser = new User;
$newUser->provider_name = 'provider';
$newUser->provider_id = $provider_user->id;
$newUser->access_token = $provider_user->token;
$newUser->refresh_token = $provider_user->refreshToken;
$newUser->expires_in = $provider_user->expiresIn;
$newUser->name = $provider_user->name;
$newUser->email = $provider_user->email;
$newUser->email_verified_at = now();
$newUser->save();
auth()->login($newUser, true);
}
return redirect('/home');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment