1. composer require laravel/socialite
Once the installation is complete, we need to register its service provider in config/app.php.
In the providers array, of config/app.php add
Laravel\Socialite\SocialiteServiceProvider::class,
In the aliases array of the same file, add
Socialite => Laravel\Socialite\Facades\Socialite::class,
Get FACEBOOK_CLIENT_ID AND FACEBOOK_CLIENT_SECRET
Get GITHUB_CLIENT_ID AND GITHUB_CLIENT_SECRET
1.in env file
FACEBOOK_CLIENT_ID=XXXXXXXX
FACEBOOK_CLIENT_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
GITHUB_CLIENT_ID=XXXXXXXX
GITHUB_CLIENT_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2.in web.php file
Route::get('login/{provider}',[sign_in_upController::class,'redirect'])
->name('redirect');
Route::get('login/{provider}/callback',[sign_in_upController::class,'callback']);
3.in sign_in_upController.php file
<?php
namespace App\Http\Controllers\sign;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
class sign_in_upController extends Controller
{
public function redirect($provider)
{
if (!in_array($provider,['google','facebook']))
{
abort(404);
}
return Socialite::driver($provider)->redirect();
}
public function callback(Request $request,$provider)
{
if (!in_array($provider,['google','facebook']))
{
abort(404);
}
$user = Socialite::driver($provider)->stateless()->user();
$checkUser = User::where(['email' => $user->getEmail()])->first();
if($checkUser)
{
auth()->loginUsingId( $checkUser->id, TRUE );
toastr()->success(__( 'login.welcome' ) );
if (Auth::user() && Auth::user()->role_id == 1)
{
return redirect()->route( 'back.super.admin.dashboard' );
}
elseif (Auth::user() && Auth::user()->role_id == 2)
{
return redirect()->route( 'teacher-dashboard.index' );
}
elseif (Auth::user() && Auth::user()->role_id == 3)
{
return redirect()->route( 'front.home' );
}
}
else
{
$user = User::create([
'name_lastname'=>$user->getName(),
'email'=>$user->getEmail(),
'avatar'=>'avatar.png',
'ip'=>$request->ip(),
'verify'=>1,
'role_id'=>3,
'provider'=>$provider,
'provider_id'=>$user->getId(),
]);
auth()->loginUsingId( $user->id, TRUE );
toastr()->success(__( 'login.welcome' ) );
return redirect()->route('front.home');
}
}
}
Digər dildə:
EN