Fale conosco
Tire suas dúvidas aqui ou entre em contato por algum dos nossos canais de comunicação


<?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>';
?>



