<?php
declare(strict_types=1);

/* ---------------- Безпечні cookie до старту сесії ---------------- */
$secure = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
session_set_cookie_params([
    'lifetime' => 0,
    'path'     => '/',
    'domain'   => '',      // за потреби вкажіть свій домен
    'secure'   => $secure,
    'httponly' => true,
    'samesite' => 'Lax',
]);
session_start();

require_once 'includes/db_connect.php';

/** Налаштування */
$activationCode = trim((string)($_GET['code'] ?? ''));
$tokenPattern   = '/^[A-Fa-f0-9]{32}$/'; // під ваш формат токена
$success        = false;
$error          = null;

if ($activationCode === '') {
    $error = "Код активації не надано!";
    error_log("activation_missing_code");
} elseif (!preg_match($tokenPattern, $activationCode)) {
    $error = "Невірний формат коду активації.";
    error_log("activation_bad_format");
} else {
    // Активація одним UPDATE — без розкриття токена у журналах
    $updateSql = "UPDATE users
                  SET active = 1, activation_code = NULL
                  WHERE activation_code = ? AND active = 0";
    $stmt = $conn->prepare($updateSql);
    if ($stmt) {
        $stmt->bind_param("s", $activationCode);
        if ($stmt->execute()) {
            if ($stmt->affected_rows === 1) {
                $success = true;
                error_log("activation_success");
            } else {
                // Код недійсний / вже використаний
                $error = "Недійсний або прострочений код активації.";
                error_log("activation_invalid_or_used");
            }
        } else {
            $error = "Помилка при активації аккаунта. Спробуйте ще раз.";
            error_log("activation_stmt_execute_failed");
        }
        $stmt->close();
    } else {
        $error = "Тимчасова помилка. Спробуйте ще раз.";
        error_log("activation_stmt_prepare_failed");
    }
}
?>
<!DOCTYPE html>
<html lang="uk">
<head>
    <meta charset="UTF-8">
    <title>Активація аккаунта</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="assets/css/style.css">
    <style>
        :root { --bg:#f4f4f4; --card:#fff; --text:#333; --ok:#2e7d32; --err:#c62828; --primary:#007bff; --primary-dark:#0056b3; }
        * { box-sizing: border-box; }
        body {
            font-family: Arial, sans-serif;
            margin: 0; padding: 20px;
            background-color: var(--bg);
            min-height: 100vh;
            display: grid; place-items: center;
            color: var(--text);
        }
        .container {
            width: min(480px, 92vw);
            padding: 20px;
            background: var(--card);
            border-radius: 14px;
            box-shadow: 0 8px 24px rgba(0,0,0,0.08);
            text-align: center;
        }
        h1 { margin: 0 0 12px; font-size: clamp(20px, 3.5vw, 26px); }
        .success {
            color: var(--ok);
            font-size: 20px;
            font-weight: bold;
            margin: 14px 0 8px;
            text-transform: uppercase;
        }
        .error {
            color: var(--err);
            font-size: 16px;
            margin: 10px 0 0;
        }
        .lead { margin: 6px 0 16px; color:#555; }
        a.btn {
            display: inline-block;
            margin-top: 14px;
            padding: 10px 14px;
            background: var(--primary);
            color: #fff; text-decoration: none;
            border-radius: 10px;
            font-weight: 600;
        }
        a.btn:hover { background: var(--primary-dark); }
        .hint { font-size: 13px; color:#666; margin-top:10px; }
    </style>
</head>
<body>
    <div class="container">
        <h1>Активація аккаунта</h1>
        <?php if ($error): ?>
            <p class="error"><?php echo htmlspecialchars($error, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); ?></p>
            <p class="lead">Перевірте, чи правильно скопійоване посилання з листа.</p>
            <a class="btn" href="index.php">На головну</a>
            <div class="hint">Якщо проблема не зникає — зверніться до адміністратора.</div>
        <?php elseif ($success): ?>
            <p class="success">Ваш аккаунт активовано!</p>
            <p class="lead">Тепер ви можете увійти до системи.</p>
            <a class="btn" href="index.php">Увійти</a>
        <?php endif; ?>
    </div>
</body>
</html>
