Untitled

 avatar
unknown
plain_text
a month ago
1.7 kB
4
Indexable
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use DB;
use Socialite;
use Log;
use App\Models\User;

use Illuminate\Support\Facades\Auth;

class SsoController extends Controller
{
    public function redirectToProvider()
    {
        return Socialite::driver('google')->with(['hd' => 'mercubuana.ac.id'])->redirect();
    }

    public function handleProviderCallback()
    {
        try {
            $googleUser = Socialite::with('google')->user();
            Log::debug('success get user : ' . $googleUser->email);
        } catch (\Exception $e) {
            Log::debug('invalid user');
            Log::debug($e);
            return redirect('/login');
        }

        $account = User::where('email', $googleUser->email)->first();

        if ($account === null) {
            Log::debug('user not found : ' . $googleUser->email);
            return redirect('/login')->with('swal_error', 'Akun email tidak ditemukan. Silakan hubungi administrator.');
        }

        $login = Auth::loginUsingId($account->id);

        if ($login) {
            Log::debug('success login account : ' . $account->email);

            $user = auth()->user();
            $roles = $user->roles;

            if ($roles->count() == 1) {
                $cekrole = $roles->first();
                $idrole = $cekrole->id;
                session(['idrole' => $idrole]);
                return redirect()->route('home');
            } else {
                return redirect()->route('dashboard');
            }
        }

        Log::debug('failed login account : ' . $account->email);
        return redirect('/login');
    }
}
Editor is loading...
Leave a Comment