<?php
declare(strict_types=1);

/*
|--------------------------------------------------------------------------
| Restrição global da usuária Cynthia
|--------------------------------------------------------------------------
| Este arquivo é carregado pelo auth.php em todas as telas autenticadas.
| Para os demais usuários, nada é alterado.
*/

if (session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
}

function cynthiaGuardNormalizar(string $valor): string
{
    $valor = trim($valor);

    if (function_exists('mb_strtolower')) {
        $valor = mb_strtolower($valor, 'UTF-8');
    } else {
        $valor = strtolower($valor);
    }

    $valor = strtr($valor, [
        'á' => 'a',
        'à' => 'a',
        'â' => 'a',
        'ã' => 'a',
        'ä' => 'a',
        'é' => 'e',
        'è' => 'e',
        'ê' => 'e',
        'ë' => 'e',
        'í' => 'i',
        'ì' => 'i',
        'î' => 'i',
        'ï' => 'i',
        'ó' => 'o',
        'ò' => 'o',
        'ô' => 'o',
        'õ' => 'o',
        'ö' => 'o',
        'ú' => 'u',
        'ù' => 'u',
        'û' => 'u',
        'ü' => 'u',
        'ç' => 'c'
    ]);

    return preg_replace('/[^a-z0-9]+/', '', $valor) ?? '';
}

$usuarioCynthiaGuard = cynthiaGuardNormalizar(
    (string) ($_SESSION['usuario'] ?? '')
);

if ($usuarioCynthiaGuard !== 'cynthia') {
    return;
}

$arquivoAtualCynthiaGuard = basename(
    (string) (
        $_SERVER['SCRIPT_FILENAME'] ??
        $_SERVER['SCRIPT_NAME'] ??
        ''
    )
);

/*
 * Subtelas indispensáveis dos três módulos também são permitidas.
 * Nenhuma tela de OS, dashboard geral, almoxarifado ou indicadores entra aqui.
 */
$arquivosPermitidosCynthiaGuard = [
    'dashboard_cynthia.php',

    'tonner.php',
    'inventario_tonner.php',
    'comprovante_tonner.php',

    'chips.php',
    'smartphones.php',
    'telecom_historico.php',

    'alerta_global_api.php',

    'logout.php',
    'controle_acesso_cynthia.php'
];

if (in_array(
    $arquivoAtualCynthiaGuard,
    $arquivosPermitidosCynthiaGuard,
    true
)) {
    return;
}

$requisicaoAjaxCynthiaGuard = strtolower(
    (string) ($_SERVER['HTTP_X_REQUESTED_WITH'] ?? '')
) === 'xmlhttprequest';

$aceitaJsonCynthiaGuard = str_contains(
    strtolower((string) ($_SERVER['HTTP_ACCEPT'] ?? '')),
    'application/json'
);

if ($requisicaoAjaxCynthiaGuard || $aceitaJsonCynthiaGuard) {
    http_response_code(403);
    header('Content-Type: application/json; charset=utf-8');
    header('Cache-Control: no-store');

    echo json_encode([
        'ok' => false,
        'message' => (
            'A usuária Cynthia possui acesso somente ao Painel Cynthia, ' .
            'Toner, Chips e Smartphones.'
        )
    ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

    exit;
}

header(
    'Location: dashboard_cynthia.php?acesso_restrito=1',
    true,
    302
);

exit;
