setClientId($clientId); $client->setClientSecret($clientSecret); $client->setRedirectUri($redirectUri); $client->addScope('email'); $client->addScope('profile'); // Αν δεν έχει έρθει το ?code= από την Google, τον στέλνουμε στη σελίδα login της Google if (!isset($_GET['code'])) { $authUrl = $client->createAuthUrl(); header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL)); exit; } // Αν επέστρεψε με κωδικό, επεξεργαζόμαστε τα στοιχεία try { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); if (isset($token['error'])) { throw new Exception("Σφάλμα σύνδεσης: " . $token['error']); } $client->setAccessToken($token['access_token']); // Παίρνουμε τα στοιχεία του χρήστη από την Google $google_oauth = new Google_Service_Oauth2($client); $google_account_info = $google_oauth->userinfo->get(); $email = $google_account_info->email; // Ελέγχουμε αποκλειστικά αν το email υπάρχει στη βάση και είναι Admin (role_id = 1) $stmt = $pdo->prepare("SELECT id, role_id, first_name, username, is_seller FROM users WHERE email = ? AND role_id = 1"); $stmt->execute([$email]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user) { // Επιτυχής σύνδεση Admin session_regenerate_id(true); $_SESSION['user_id'] = $user['id']; $_SESSION['role_id'] = $user['role_id']; $_SESSION['first_name'] = $user['first_name'] ?? ''; $_SESSION['username'] = $user['username']; $_SESSION['is_seller'] = $user['is_seller'] ?? 0; header("Location: index.php"); exit; } else { // Ο χρήστης δεν βρέθηκε ή δεν έχει δικαιώματα διαχειριστή $_SESSION['login_error'] = "Ο λογαριασμός Google δεν έχει δικαιώματα διαχειριστή (Admin)."; header("Location: login.php"); exit; } } catch (Exception $e) { $_SESSION['login_error'] = "Σφάλμα Google Login: " . $e->getMessage(); header("Location: login.php"); exit; }