# Incidente: Lliria Properties no permitía iniciar sesión

**Fecha:** 4 de agosto de 2026  
**Aplicación afectada:** `C:\xampp\htdocs\captajaus\lliria-properties-scraper`  
**URL afectada:** `http://100.78.198.98:3000/login`  
**Alcance en este repositorio:** registro de compatibilidad de una aplicación vecina; Codex Suite no comparte sus credenciales.

## Síntoma

La página de acceso devolvía HTTP 200, pero las credenciales históricas no producían una sesión utilizable.

## Causas demostradas

1. El proceso PM2 se ejecutaba con `NODE_ENV=production`.
2. En producción, el acceso heredado estaba deshabilitado correctamente.
3. No existían credenciales administrativas configuradas y la tabla `users` estaba vacía. Por tanto, ninguna rama de autenticación podía completarse.
4. Tras migrar la cuenta, el servidor respondía 302 a `/dashboard`, pero no emitía `Set-Cookie`: la cookie tenía `Secure=true` mientras el servicio se consumía directamente mediante HTTP por Tailscale.

Los errores 403/404 de los portales de scraping observados en el log no estaban relacionados con el inicio de sesión.

## Corrección localizada

- La cuenta heredada se migró una sola vez a `users` como operador con bcrypt coste 12, sin mostrar ni cambiar sus credenciales.
- Se añadió `SESSION_COOKIE_SECURE` como configuración explícita. Se fijó a `false` únicamente para el transporte HTTP privado actual.
- Se mantuvieron `HttpOnly` y `SameSite=Lax`.
- Se compiló TypeScript y se reinició exclusivamente el proceso `lliria-properties`.

## Evidencia ejecutada

- `npm run build`: finalizó correctamente.
- Localhost: GET login 200, POST login 302, cookie emitida y dashboard autenticado 200.
- Tailscale `100.78.198.98:3000`: GET login 200, POST login 302, cookie emitida y dashboard autenticado 200.
- La cookie comprobada conserva `HttpOnly` y `SameSite=Lax`.
- El arranque posterior registró conexión MySQL, scheduler y servidor en el puerto 3000.

## Límite y seguimiento

El acceso HTTP no ofrece confidencialidad de transporte, aunque Tailscale limite la red. La solución definitiva es publicar la aplicación mediante HTTPS administrado y volver a activar `SESSION_COOKIE_SECURE=true`. Este cambio no modifica `BRIDGE_TOKEN`, las sesiones de Codex Suite ni otras aplicaciones.

