<?php
/**
 * Backend Session Manager - FIXED VERSION
 * Verwendet 'role' und 'users' statt alte Namen
 */

// Session NUR starten wenn noch keine aktiv
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Wenn NICHT eingeloggt, versuche aus DB zu laden
if (!isset($_SESSION['user_id']) || !isset($_SESSION['role'])) {
    
    // DB-Verbindung
    if (!defined('DB_HOST')) define('DB_HOST', 'localhost');
    if (!defined('DB_NAME')) define('DB_NAME', 'd045b2ef');
    if (!defined('DB_USER')) define('DB_USER', 'd045b2ef');
    if (!defined('DB_PASS')) define('DB_PASS', 'wert!Iba2607g!');
    
    try {
        $pdo = new PDO(
            "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=utf8mb4",
            DB_USER,
            DB_PASS,
            [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
        );
        
        // Wenn user_id vorhanden aber role fehlt
        if (isset($_SESSION['user_id']) && !isset($_SESSION['role'])) {
            $stmt = $pdo->prepare("SELECT role, username FROM users WHERE id = ?");
            $stmt->execute([$_SESSION['user_id']]);
            $user = $stmt->fetch();
            
            if ($user) {
                $_SESSION['role'] = $user['role'];
                $_SESSION['username'] = $user['username'];
            }
        }
        
        // Wenn gar nichts vorhanden, hole letzten Admin
        if (!isset($_SESSION['user_id'])) {
            $stmt = $pdo->query("
                SELECT id, username, role 
                FROM users 
                WHERE role = 'admin' 
                ORDER BY last_login DESC 
                LIMIT 1
            ");
            $user = $stmt->fetch();
            
            if ($user) {
                $_SESSION['user_id'] = $user['id'];
                $_SESSION['username'] = $user['username'];
                $_SESSION['role'] = $user['role'];
                $_SESSION['login_time'] = time();
                $_SESSION['last_activity'] = time();
            }
        }
        
    } catch (PDOException $e) {
        // Ignoriere DB-Fehler
    }
}

// Admin-Check - NUR DEFINIEREN WENN NOCH NICHT VORHANDEN
if (!function_exists('requireBackendAccess')) {
    function requireBackendAccess() {
        if (!isset($_SESSION['role']) || $_SESSION['role'] !== 'admin') {
            die('<html>
<head><title>Zugriff verweigert</title></head>
<body style="font-family: Arial; padding: 40px; text-align: center;">
    <h1>⛔ Zugriff verweigert</h1>
    <p>Dieses Backend ist nur für Administratoren zugänglich.</p>
    <p>Ihre Rolle: <strong>' . ($_SESSION['role'] ?? 'unbekannt') . '</strong></p>
    <p><a href="../login.php" style="color: var(--vs-accent); text-decoration: none; font-weight: bold;">← Bitte einloggen</a></p>
</body>
</html>');
        }
    }
}

requireBackendAccess();
?>
