Skip to content
Usuario

Frontend Deployment

El frontend vive en F:\HemiaAssistantGlobal\hemia-assistance-front-legacy. Es Vue 2 + Vue CLI. Las variables VUE_APP_* se resuelven en build time: cambiar env requiere recompilar.

ScriptComandoUso
servenpm run serve:d2Desarrollo/local default con D2 cookie auth HTTP.
serve:d2node scripts/dev-auth-mode.js d2Desarrollo/local explicito con cookies D2.
serve:legacynode scripts/dev-auth-mode.js legacyRegresion local opt-in con Authorization legacy.
serve:lannode scripts/dev-auth-mode.js d2 --host 0.0.0.0 --port 8081Desarrollo LAN con D2.
buildset NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service buildBuild production default.
build-stageset NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build --mode stagingBuild staging.
lintset NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lintLint.

Configura las variables antes del build:

NODE_ENV=production
VUE_APP_CORE_URL_API=https://api.<dominio>/
VUE_APP_AUTH_COOKIE_MODE=d2
VUE_APP_BROWSER_AUTH_TRANSPORT=cookie
VUE_APP_CSRF_ENABLED=true

Despues:

Terminal window
npm install
npm run lint
npm run build

El artefacto generado vive en dist/.

No hay Dockerfile ni config Nginx real en repo. El archivo htaccess.txt muestra una regla Apache para SPA fallback a index.html.

Requisitos para cualquier servidor estatico:

  • Servir solo por HTTPS.
  • Activar fallback SPA a index.html.
  • No cachear index.html de forma que impida rollback rapido.
  • Cachear assets con hash de dist/ si la plataforma lo soporta.
  • No inyectar scripts inline no aprobados.
  • No exponer sourcemaps en produccion salvo decision formal.
ValidacionComo comprobar
Flags de cookies activasRevisar build env y, si hay tooling, getSafeAuthClientConfigSummary().
API URL correctaNetwork apunta a https://api.<dominio>/.
withCredentialsRequests del navegador envian cookies.
Sin AuthorizationDevTools Network no muestra Authorization para auth navegador.
CSRFMutaciones incluyen X-CSRF-Token.
Session hydrationReload llama /api/auth/session y rehidrata runtime.
Storage limpiolocalStorage y sessionStorage sin token, refreshtoken, refresh_token, permissions, business, tenantOperational.
CookiesAccess/refresh no visibles en document.cookie; CSRF visible.
LogoutLlama /api/auth/close, limpia runtime y redirige a login.
401Limpia runtime/storage y evita loops con /api/auth/session y /api/auth/csrf.

El frontend aun conserva ramas legacy por compatibilidad. En produccion con autenticacion por cookies:

  • VUE_APP_AUTH_COOKIE_MODE debe ser d2.
  • VUE_APP_BROWSER_AUTH_TRANSPORT debe ser cookie.
  • VUE_APP_CSRF_ENABLED debe ser true.

Si cualquiera falta, el frontend puede volver al contrato legacy y construir Authorization desde $session.

Local normal usa D2:

Terminal window
npm run serve

Legacy se conserva solo para regresion opt-in:

Terminal window
npm run serve:legacy

El backend local esperado para serve es http://127.0.0.1:3009/.

VUE_APP_SECRET_KEY se usa para armar secretkey/timestamp/signature del payload legacy de login. Al vivir en el bundle, no es secreto real. No lo uses para proteger datos productivos ni lo trates como reemplazo de TLS, CSRF, JWT secrets o controles backend.

Rollback frontend debe publicar el artefacto anterior conocido como bueno, pero no debe convertirse en retorno permanente a tokens legibles por JavaScript. Si se apaga temporalmente el modo de cookies:

  • Documentar aceptacion de riesgo.
  • Limpiar cookies de autenticacion.
  • Mantener CORS cerrado.
  • No desactivar CSRF si backend sigue autenticando por cookies.
  • Repetir smoke tests de login/logout/session.