<?php
function identifyTenant() {
    return function($request, $response, $next) {
        session_start();
        
        // 1. Verifica se há um tenant_id na sessão (login já realizado)
        if (isset($_SESSION['usuario']['tenant_id'])) {
            $tenantId = $_SESSION['usuario']['tenant_id'];
            $request = $request->withAttribute('tenant_id', $tenantId);
            return $next($request, $response);
        }
        
        // 2. Tenta identificar por subdomínio (ex: tenant1.seudominio.com)
        $host = $_SERVER['HTTP_HOST'];
        $subdomain = explode('.', $host)[0];
        
        if ($subdomain && $subdomain != 'www') {
            $stmt = $conn->prepare("SELECT id FROM tenants WHERE slug = ?");
            $stmt->bind_param("s", $subdomain);
            $stmt->execute();
            $result = $stmt->get_result();
            
            if ($result->num_rows > 0) {
                $tenant = $result->fetch_assoc();
                $request = $request->withAttribute('tenant_id', $tenant['id']);
                return $next($request, $response);
            }
        }
        
        // 3. Tenta identificar por parâmetro na URL (ex: ?tenant_id=123)
        $tenantId = $request->getQueryParams()['tenant_id'] ?? null;
        if ($tenantId) {
            $request = $request->withAttribute('tenant_id', $tenantId);
            return $next($request, $response);
        }
        
        // 4. Se nenhum método funcionar, retorna erro
        return $response->withStatus(400)->write('Tenant não identificado');
    };
}
?>