itmpwk.ac.id/app/Http/Controllers/Auth/GoogleAuthController.php

57 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Inertia\Inertia;
use Laravel\Socialite\Facades\Socialite;
use Symfony\Component\HttpFoundation\RedirectResponse as SymfonyRedirectResponse;
class GoogleAuthController extends Controller
{
public function redirect(): SymfonyRedirectResponse
{
return Socialite::driver('google')->redirect();
}
public function callback(Request $request): RedirectResponse
{
$googleUser = Socialite::driver('google')->user();
$user = User::where('email', $googleUser->getEmail())->first();
if (! $user) {
Inertia::flash('toast', [
'type' => 'error',
'message' => 'Akun dengan email Google tersebut tidak ditemukan. Silakan hubungi administrator.',
]);
return Redirect::route('login');
}
if (! $user->is_active) {
Inertia::flash('toast', [
'type' => 'error',
'message' => 'Akun Anda tidak aktif. Silakan hubungi administrator.',
]);
return Redirect::route('login');
}
if ($user->google_id !== $googleUser->getId()) {
$user->update(['google_id' => $googleUser->getId()]);
}
Auth::login($user, remember: true);
$request->session()->regenerate();
return Redirect::intended(route('dashboard', absolute: false));
}
}