<?php
/**
 * Verrou d'accès — mot de passe unique pour toute l'app.
 * Mot de passe par défaut (avant première personnalisation) : regie2026
 * À changer via l'onglet Configuration.
 */
declare(strict_types=1);
require_once __DIR__ . '/inc.php';

if (session_status() === PHP_SESSION_NONE) {
    session_set_cookie_params([
        'httponly' => true,
        'samesite' => 'Lax',
        'secure'   => (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'),
    ]);
    session_start();
}

const DEFAULT_APP_PW = 'regie2026';

function app_is_auth(): bool
{
    return !empty($_SESSION['app_auth']);
}

function app_verify(string $pw): bool
{
    if ($pw === '') {
        return false;
    }
    $hash = (string) (cfg_load()['app_password_hash'] ?? '');
    if ($hash === '') {
        return hash_equals(DEFAULT_APP_PW, $pw);   // pas encore personnalisé
    }
    return password_verify($pw, $hash);
}

function app_set_password(string $pw): void
{
    if (strlen($pw) < 4) {
        return;
    }
    $c = cfg_load();
    $c['app_password_hash'] = password_hash($pw, PASSWORD_DEFAULT);
    cfg_save($c);
}

/** Pour api.php : refuse en JSON si non connecté. */
function require_auth_api(): void
{
    if (!app_is_auth()) {
        http_response_code(401);
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode(['ok' => false, 'error' => 'Session expirée. Recharge la page et reconnecte-toi.']);
        exit;
    }
}
