<?php
// config_sessao.php - Configuração centralizada de sessão

// Configurações de segurança para sessão
ini_set('session.cookie_httponly', 1);
ini_set('session.use_strict_mode', 1);
ini_set('session.cookie_samesite', 'Lax');
ini_set('session.gc_maxlifetime', 7200); // 2 horas
ini_set('session.cookie_lifetime', 0); // Até fechar o navegador

// Ativa o cookie_secure somente se estiver usando HTTPS
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
    ini_set('session.cookie_secure', 1);
} else {
    ini_set('session.cookie_secure', 0);
}

// Nome da sessão personalizado para evitar conflitos
session_name('SONSESSID');

// Inicia sessão apenas se não estiver iniciada
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Função para regenerar ID da sessão com segurança
function regenerarSessao() {
    // Salva dados atuais
    $dados_sessao = $_SESSION;
    
    // Regenera ID
    session_regenerate_id(true);
    
    // Restaura dados
    $_SESSION = $dados_sessao;
    
    return session_id();
}

// Função para destruir sessão completamente
function destruirSessao() {
    $_SESSION = array();
    
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }
    
    session_destroy();
}

// Função para verificar se usuário está logado
function estaLogado() {
    return (isset($_SESSION['logado']) && $_SESSION['logado'] === true);
}

// Função para obter dados do usuário logado
function getUsuarioLogado() {
    if (!estaLogado()) {
        return null;
    }
    
    // Retorna estrutura unificada
    if (isset($_SESSION['usuario']) && is_array($_SESSION['usuario'])) {
        return $_SESSION['usuario'];
    }
    
    // Compatibilidade com estrutura antiga
    return [
        'id' => $_SESSION['usuario_id'] ?? 0,
        'nome' => $_SESSION['nome_usuario'] ?? '',
        'email' => $_SESSION['email_usuario'] ?? '',
        'permissao' => $_SESSION['permissao'] ?? '',
        'tenant_id' => $_SESSION['tenant_id'] ?? 0,
        'foto_perfil' => $_SESSION['foto_perfil'] ?? '',
        'tenant_nome' => $_SESSION['tenant_nome'] ?? '',
        'tenant_ativo' => $_SESSION['tenant_ativo'] ?? 0,
        'plano_codigo' => $_SESSION['plano_codigo'] ?? ''
    ];
}
?>