Uecko_ERP/apps/web/README.md
2026-07-06 17:47:05 +02:00

1.4 KiB

apps/web

Aplicación frontend principal del ERP.

Runtime actual de autenticación

La app usa:

@erp/identity/client
IdentityAuthSessionProvider
DataSourceProvider
Axios compartido

No debe usarse @erp/auth/client como runtime nuevo.

Flujo actual

login
-> GET /identity/auth/session
-> GET /companies/available
-> resolver empresa activa
-> auto-selección si hay una sola empresa
-> selector si hay varias
-> /no-companies si no hay empresas
-> X-Company-Id en rutas tenant-scoped

Headers

No enviar X-Company-Id a:

POST /identity/auth/login
POST /identity/auth/refresh
POST /identity/auth/logout
GET /identity/auth/session
GET /companies/available

Sí enviarlo a rutas tenant-scoped cuando exista activeCompanyId.

App company switcher

Componente:

apps/web/src/layout/app-company-switcher.tsx

Propósito:

  • mostrar la empresa activa real en el layout autenticado
  • permitir cambiar entre availableCompanies de la sesión actual

Reglas:

  • usar el contexto de identity
  • no manejar tokens
  • no llamar directamente a GET /companies/available
  • no usar companySlug para auth
  • no modificar el access token

Refresh automático

La app implementa refresh automático global sobre 401 con retry único por request y refreshPromise compartida.

Si el refresh falla:

  • limpiar sesión
  • limpiar empresa activa persistida
  • redirigir a /login