<?php
/**
 * Login‑Seite (admin/login.php)
 * --------------------------------------------------
 * Zeigt das Login‑Formular an, verarbeitet POST‑Daten und leitet den
 * Admin‑Benutzer nach erfolgreicher Authentifizierung zum Dashboard weiter.
 *
 * Projektrichtlinien (Mailresponder v9):
 *   • Ausführliche Kommentare in allen kritischen Blöcken
 *   • try/catch‑Fehlerbehandlung für alle Vorgänge
 *   • Logging aller SQL‑Operationen übernimmt der AuthController
 *     (ErrorLogger::logSqlSuccess / logSqlError)
 *   • Zusätzlich wird hier jede Login‑Aktion via logUserAction aufgezeichnet
 *   • Keine erneute Deklaration von logUserAction / logSettingChange, da
 *     diese bereits global in includes/functions.php vorhanden sind.
 */

// --------------------------------------------------
// 1) Sitzungsinitialisierung
// --------------------------------------------------
if (session_status() === PHP_SESSION_NONE) {
    session_start(); // startet Session, sofern nicht vorhanden
}

// --------------------------------------------------
// 2) Abhängigkeiten einbinden
// --------------------------------------------------
require_once __DIR__ . '/../includes/init.php';   // lädt u. a. functions.php mit logUserAction()
require_once __DIR__ . '/../auth/AuthController.php';

// --------------------------------------------------
// 3) Controller & Variablen initialisieren
// --------------------------------------------------
$auth  = new AuthController(); // übernimmt Auth‑Logik inkl. SQL‑Logging
$error = '';                  // Fehlermeldung für UI

// --------------------------------------------------
// 4) POST‑Request verarbeiten
// --------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Eingaben aus Formular holen & bereinigen
    $email    = trim($_POST['email']    ?? '');
    $password =       $_POST['password'] ?? '';

    try {
        // Authentifizierung über Controller
        $result = $auth->login($email, $password);

        if ($result === true) {
            // ---------------------------------------------
            // Erfolg: Benutzer eingeloggt → Weiterleitung
            // ---------------------------------------------
            logUserAction($_SESSION['admin_id'] ?? 0, 'Login‑Formular: Erfolg', 'IP: ' . $_SERVER['REMOTE_ADDR']);
            header('Location: dashboard.php');
            exit;
        }

        // ---------------------------------------------
        // Möglicher Fehlertext vom Controller
        // ---------------------------------------------
        $error = $result;
        logUserAction(0, 'Login‑Formular: Fehler', "E‑Mail: $email | Meldung: $error");

    } catch (Throwable $e) {
        // ---------------------------------------------
        // Unerwarteter Fehler (z. B. PHP/DB‑Exception)
        // ---------------------------------------------
        ErrorLogger::log('login.php – Unhandled Exception: ' . $e->getMessage());
        $error = 'Ein unerwarteter Fehler ist aufgetreten. Bitte versuche es erneut.';
    }
}

// --------------------------------------------------
// 5) HTML‑Ausgabe puffern
// --------------------------------------------------
ob_start();
?>

<?php if ($error): ?>
    <!-- Bootstrap‑Alert für Fehlermeldung (auto‑dismiss via JS möglich) -->
    <div class="alert alert-danger alert-dismissible fade show" role="alert">
        <?= htmlspecialchars($error) ?>
        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
    </div>
<?php endif; ?>

<!-- --------------------------------------------------
     Login‑Formular
     -------------------------------------------------- -->
<form method="post">
    <div class="mb-3">
        <label for="email" class="form-label">E‑Mail-Adresse</label>
        <input
            type="email"
            name="email"
            id="email"
            class="form-control"
            required
            value="<?= htmlspecialchars($_POST['email'] ?? '') ?>"
        >
    </div>

    <div class="mb-3">
        <label for="password" class="form-label">Passwort</label>
        <input
            type="password"
            name="password"
            id="password"
            class="form-control"
            required
        >
    </div>

    <button type="submit" class="btn btn-primary">
        <i class="bi bi-box-arrow-in-right me-1"></i> Anmelden
    </button>
    <a href="reset_request.php" class="btn btn-link">
        <i class="bi bi-question-circle me-1"></i> Passwort vergessen?
    </a>
</form>

<?php
// --------------------------------------------------
// 6) Seite fertigstellen & Template einbinden
// --------------------------------------------------
$pageContent = ob_get_clean();
$title       = 'Login';
$pageHelp    = '';
include __DIR__ . '/template_form.php';
?>
