LARAVEL

Socialite ilə Laraveldə Sosial Giriş

28.10.2021 2 dəq oxuma Yeniləndi: 07.11.2021

  

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