DIP
<?php 
// Headers específicos para LiteSpeed Cache
header('Cache-Control: no-cache, no-store, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');

// Headers específicos para LiteSpeed
if (function_exists('litespeed_purge_all')) {
    header('X-LiteSpeed-Cache-Control: no-cache');
}

// Desabilitar cache do WordPress para este arquivo
if (!defined('DONOTCACHEPAGE')) {
    define('DONOTCACHEPAGE', true);
}
if (!defined('DONOTCACHEOBJECT')) {
    define('DONOTCACHEOBJECT', true);
}
if (!defined('DONOTCACHEDB')) {
    define('DONOTCACHEDB', true);
}

// Verificar se existe um parâmetro para forçar atualização do cookie
$force_refresh = isset($_GET['refresh_user']) || isset($_POST['refresh_user']);

// Tentar obter o cookie de diferentes formas
$idpessoacode = null;

// Método 1: Cookie tradicional
if (isset($_COOKIE['idpessoacode']) && !empty($_COOKIE['idpessoacode'])) {
    $idpessoacode = sanitize_text_field($_COOKIE['idpessoacode']);
}

// Método 2: Verificar via JavaScript se o cookie não foi encontrado
if (empty($idpessoacode)) {
    echo '<script>
        // Tentar obter cookie via JavaScript
        function getCookie(name) {
            let value = "; " + document.cookie;
            let parts = value.split("; " + name + "=");
            if (parts.length == 2) return parts.pop().split(";").shift();
            return null;
        }
        
        let cookieValue = getCookie("idpessoacode");
        if (cookieValue && cookieValue !== "") {
            // Reenviar via POST se encontrou cookie no JS
            let form = document.createElement("form");
            form.method = "POST";
            form.style.display = "none";
            
            let input = document.createElement("input");
            input.name = "js_cookie_value";
            input.value = cookieValue;
            form.appendChild(input);
            
            let refresh = document.createElement("input");
            refresh.name = "refresh_user";
            refresh.value = "1";
            form.appendChild(refresh);
            
            document.body.appendChild(form);
            form.submit();
        }
    </script>';
}

// Método 3: Verificar se foi enviado via POST do JavaScript
if (empty($idpessoacode) && isset($_POST['js_cookie_value']) && !empty($_POST['js_cookie_value'])) {
    $idpessoacode = sanitize_text_field($_POST['js_cookie_value']);
}

// Debug (remover em produção)
error_log('Cookie idpessoacode: ' . ($idpessoacode ? $idpessoacode : 'não encontrado'));

if (!empty($idpessoacode)) {
    $url = "https://cmsv3.portasabertas.org.br/api/pessoas/mev3";

    $headers = [
        'Authorization' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJNREV5VW10R1ZGWkZUazVWZHowOVRXcEJNRTlCUFQwIn0=.sR2PWTqcv/2a1efuM7mlshQ0hEkCGRnV0HmVi7rzQro=', 
        'Content-Type'  => 'application/json',
        'Cache-Control' => 'no-cache',
        'User-Agent' => 'WordPress/' . get_bloginfo('version') . '; ' . get_bloginfo('url')
    ];

    $body = json_encode([
        'idpessoacode' => $idpessoacode
    ]);

    // Adicionar timestamp para evitar cache na API
    $response = wp_remote_post($url . '?t=' . time(), [
        'headers' => $headers,
        'body'    => $body,
        'timeout' => 15,
        'sslverify' => true,
        'blocking' => true,
        'httpversion' => '1.1'
    ]);

    if (!is_wp_error($response)) {
        $response_code = wp_remote_retrieve_response_code($response);
        $body_response = wp_remote_retrieve_body($response);
        
        // Debug da resposta (remover em produção)
        error_log('Response code: ' . $response_code);
        error_log('Response body: ' . $body_response);
        
        $data = json_decode($body_response, true);

        if (!empty($data) && isset($data['data']['despessoa'])) {
            $nome   = esc_html($data['data']['despessoa']);
            $imagem = !empty($data['data']['desimage']) 
                        ? esc_url($data['data']['desimage']) 
                        : "https://sitepa.s3.amazonaws.com/wp-content/uploads/br/2025/09/Vertical-container-1.avif";

            // Adicionar um identificador único para evitar cache do browser
            $cache_buster = '?v=' . time();
            if (strpos($imagem, '?') !== false) {
                $cache_buster = '&v=' . time();
            }

            // Usuário logado
            echo '
            <div class="user-menu" style="position:relative;display:inline-block;" data-user-loaded="true">
                <div class="user-box" style="display:flex;align-items:center;gap:8px;cursor:pointer;" onclick="toggleUserDropdown(this)">
                    <img src="'.$imagem.$cache_buster.'" alt="'.$nome.'" style="width:35px;height:35px;border-radius:50%;object-fit:cover;" onload="this.style.opacity=1" style="opacity:0;transition:opacity 0.3s;">
                    <span style="font-size:14px;">Hola, <strong>'.$nome.'</strong></span>
                    <img src="https://sitepa.s3.amazonaws.com/wp-content/uploads/br/2025/09/Arrows-Diagrams.svg" alt="Seta" style="width:25px;height:25px;">
                </div>
                <div class="user-dropdown" style="display:none;position:absolute;right:0;top:100%;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 2px 6px rgba(0,0,0,0.15);min-width:200px;z-index:999;">
                    <a href="https://parceiro.portasabertas.org.br/" style="display:flex;align-items:center;gap:6px;padding:10px;color:#333;text-decoration:none;font-size:14px;">
                        <img src="https://sitepa.s3.amazonaws.com/wp-content/uploads/br/2025/09/login-enter-arrow-right-circle.svg" alt="Área restrita" style="width:16px;height:16px;">
                        Acceder al portal
                    </a>
                    
                </div>
            </div>

            <script>
            function toggleUserDropdown(element) {
                let dropdown = element.nextElementSibling;
                dropdown.style.display = dropdown.style.display === "block" ? "none" : "block";
            }

            function refreshUserData() {
                window.location.href = window.location.href + (window.location.href.includes("?") ? "&" : "?") + "refresh_user=1";
            }

            // Fechar dropdown ao clicar fora
            document.addEventListener("click", function(e) {
                document.querySelectorAll(".user-dropdown").forEach(function(drop){
                    if (!drop.previousElementSibling.contains(e.target)) {
                        drop.classList.remove("show");
                        drop.style.display = "none";
                    }
                });
            });

            // Verificar se o usuário foi carregado corretamente
            document.addEventListener("DOMContentLoaded", function() {
                if (!document.querySelector("[data-user-loaded]")) {
                    console.log("Usuário não carregado, tentando novamente em 2 segundos...");
                    setTimeout(function() {
                        window.location.reload();
                    }, 2000);
                }
            });
            </script>
            ';
        } else {
            // Dados inválidos na API
            error_log('Dados inválidos retornados pela API: ' . json_encode($data));
            showFallbackLogin();
        }
    } else {
        // Erro na API
        error_log('Erro na API: ' . $response->get_error_message());
        showFallbackLogin();
    }
} else {
    // Sem cookie
    showFallbackLogin();
}

// Função para mostrar o fallback de login
function showFallbackLogin() {
    echo '<div class="user-login" style="display:flex;align-items:center;gap:10px;">';
    echo '<img src="https://sitepa.s3.amazonaws.com/wp-content/uploads/br/2025/09/Vertical-container-1.avif" alt="Login" style="width:35px;height:35px;">';
    echo '<a href="https://auth.parceiro.portasabertas.org.br/login">Entrar</a>';
    echo '<span class="header__divider">|</span>';
    echo '<a href="https://auth.parceiro.portasabertas.org.br/cadastro">Regístrate</a>';
    echo '</div>';
}

// CSS adicional para melhorar a experiência
echo '<style>
.user-menu img {
    transition: opacity 0.3s ease-in-out;
}
.user-dropdown.show {
    display: block !important;
}
</style>';
?>
Bem vindo
Acesse sua conta ou registre-se gratuitamente.

Seu canal direto
com a Portas Abertas

Envie sugestões, elogios, reclamações ou denúncias. Este espaço existe para ouvir você com responsabilidade e confiança.

Fazer manifestação

O que você deseja fazer?

Sugestão

Compartilhe ideias para melhorarmos nossos processos.

Elogio

Reconheça atendimentos, ações ou iniciativas positivas.

Reclamação

Relate situações que não atenderam suas expectativas.

Denúncia

Informe condutas inadequadas ou situações que precisam de apuração.

Dados da manifestação ou pedido de acesso à informação

Preencha os campos referente a sua manifestação ou pedido de acesso à informação.

Google reCaptcha: Chave do site inválida.

Sobre este canal

A Ouvidoria da Portas Abertas é um espaço de escuta, transparência e cuidado. Por meio deste canal, você pode registrar manifestações que nos ajudem a aprimorar nossos processos, relacionamentos e formas de atendimento.

Todas as mensagens são analisadas com responsabilidade, respeitando a confidencialidade das informações e o encaminhamento adequado para cada situação.