<?php
require_once __DIR__ . '/app/bootstrap.php';

$method = strtoupper((string)($_SERVER['REQUEST_METHOD'] ?? 'GET'));
if (!in_array($method, ['GET', 'POST'], true)) {
    header('Allow: GET, POST');
    if (request_wants_json()) {
        send_json_response(['ok' => false, 'message' => 'HTTP metoda nije dozvoljena.'], 405);
    }
    http_response_code(405);
    exit('HTTP metoda nije dozvoljena.');
}

$input = $method === 'POST' ? $_POST : $_GET;
$csrf = (string)($input['csrf_token'] ?? $input['csrf'] ?? '');
$reason = (string)($input['reason'] ?? 'manual');
$isExpiredLogout = $reason === 'expired';

if (authenticated_session_exists() && !csrf_token_is_valid($csrf)) {
    if (request_wants_json()) {
        send_json_response([
            'ok' => false,
            'message' => 'Bezbednosni token je obnovljen. Ponovite zahtev.',
            'csrf_token' => csrf_token(),
        ], 419);
    }
    http_response_code(419);
    exit('Bezbednosni token je istekao ili nije validan. Vratite se u sistem i pokušajte ponovo.');
}

invalidate_current_session();
start_clean_anonymous_session();

if ($isExpiredLogout) {
    queue_session_expired_notice();
    $redirectUrl = url('login.php?session=expired');
} else {
    $_SESSION['flash'][] = ['type' => 'success', 'message' => 'Uspešno ste se odjavili.'];
    $redirectUrl = url('login.php');
}

if (request_wants_json()) {
    send_json_response(['ok' => true, 'redirect_url' => $redirectUrl]);
}

header('Location: ' . $redirectUrl);
exit;
