HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
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'));
    }

}