-
Notifications
You must be signed in to change notification settings - Fork 3
7. Social Login
dungda-0794 edited this page Feb 16, 2023
·
8 revisions
Note: Social Login custom from package Socialite providers
- Providers to be used in addition
Login With Google
Installation provider
composer require socialiteproviders/google
Add configuration to config/services.php
# config/services.php
...
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URI')
],Update config enabled_social is true
# conig/sun-asterisk.php
...
/*
|---------------------------------------------------------
| use Socialite Providers for social login
|---------------------------------------------------------
|
| Default false
|
*/
'enabled_social' => true,Make web route function the following:
# routes/web.php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use SunAsterisk\Auth\Contracts\AuthSocialInterface;
...
// Redirect Endpoint
Route::get('social/{provider}/redirect', function (Request $request) {
$provider = $request->provider;
// use service from package
return app(AuthSocialInterface::class)->socialSignIn($provider);
});
// Callback Endpoint
Route::get('social/{provider}/callback', function (Request $request) {
$provider = $request->provider;
// use service from package
$socialUser = app(AuthSocialInterface::class)->socialCallback($provider);
$user = \App\Models\User::updateOrCreate([
'social_id' => $socialUser->id,
'social_type' => $provider,
], [
'name' => $socialUser->name,
'email' => $socialUser->email,
'avatar' => $socialUser->avatar,
]);
Auth::login($user);
return redirect('/dashboard');
});
/**
* [socialSignIn]
* @param string $provider [The Provider should received from https://socialiteproviders.com/about/]
* @return [Illuminate\Http\RedirectResponse]
*/
public function socialSignIn(?string $provider): RedirectResponse;
/**
* [socialCallback]
* @param string $provider [The Provider should received from https://socialiteproviders.com/about/]
* @return [stdClass]
*/
public function socialCallback(?string $provider): stdClass;