File: /var/www/ivs.kaunokolegija.lt/laravel/app/Http/Controllers/GoogleAuthController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Laravel\Socialite\Facades\Socialite;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
class GoogleAuthController extends Controller
{
public function redirectToGoogle()
{
return Socialite::driver('google')
->scopes(['https://www.googleapis.com/auth/calendar'])
->with(['access_type' => 'offline', 'prompt' => 'consent'])
->redirect();
}
public function handleGoogleCallback()
{
try {
$googleUser = Socialite::driver('google')->stateless()->user();
$user = auth()->user();
if (!$user) {
return redirect()->route('login')->with('error', __('global.please_login_first'));
}
$user->update([
'google_token' => $googleUser->token,
'google_refresh_token' => $googleUser->refreshToken ?? $user->google_refresh_token,
]);
return redirect()->route('admin.home')->with('success', __('global.youAreLoggedIn'));
} catch (\Exception $e) {
return redirect()->route('admin.home')->with('error', 'Google login failed: ' . $e->getMessage());
}
}
public function disconnectGoogle(Request $request)
{
$user = auth()->user();
$user->google_token = null;
$user->google_refresh_token = null;
$user->save();
return redirect()->route('admin.home')->with('success', __('global.google_account_disconnected'));
}
}