Edge getUser() could not reach Auth, so a valid cookie still looked
logged-out. Route on the local session cookie instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
Middleware getUser() could not validate the session cookie via the
internal Docker hostname, so auth succeeded in the browser but kept
redirecting back to /login stuck on "Verificando".
Co-authored-by: Cursor <cursoragent@cursor.com>
Comparativas WoW/MoM/YoY muestran prev/Δ además del %; sync ads admite
histórico desde 2025; tabla ads↔CRM añade cierres, ventas y ROAS.
Co-authored-by: Cursor <cursoragent@cursor.com>
URL pública por tenant (?tenant=slug) para contactos y oportunidades;
middleware permite POST sin sesión.
Co-authored-by: Cursor <cursoragent@cursor.com>
Admin home lists tenants, alerts, and connection health; header
selector enables superadmin context; Meta/GA4/GSC/GTM/CRM/email
slots live per tenant (manual status until OAuth).
Co-authored-by: Cursor <cursoragent@cursor.com>
Require session on APIs, scope KPIs/activos/simulate to the user tenant, strip real JWTs from .env.example, and add health/smoke/docs for 4Ventures ops.
Co-authored-by: Cursor <cursoragent@cursor.com>