4NK_env/docs/lecoffre-front/HMR_IDNOT_STATE.md
LeCoffre Deployment 8d69c2c700 auto_clea
2025-09-26 12:24:42 +00:00

2.1 KiB
Raw Permalink Blame History

HMR + IdNot + dev3 via state (mise à jour: 2025-09-24)

Vue densemble

  • HMR (Hot Module Replacement)

    • En local, Next.js sert le HMR (ex: port 3000) et recharge les modules sans redémarrage.
    • Les appels API sont effectués en same-origin via le proxy Nginx/compose: le front cible /api/..., Nginx route vers dev3. Pas de CORS ni reconfig lors des reloads.
    • En dev4/prod, pas de HMR: next start sert lapp buildée sous /lecoffre/.
  • Émission du state (dev3)

    • Front → POST /api/v1/idnot/state (same-origin /api). Nginx (dev4) relaie vers https://dev3.4nkweb.com/api/v1/idnot/state.
    • Body: { "next_url": "https://dev4.4nkweb.com/lecoffre/authorized-client" }.
    • Réponse: { "state": "<state_signé>" }. CORS dynamique côté Nginx (dev3) autorise lorigine dev4.
  • Redirection IdNot avec state

    • URL dautorisation:
      • base = NEXT_PUBLIC_IDNOT_BASE_URL + NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT
      • client_id = NEXT_PUBLIC_IDNOT_CLIENT_ID
      • redirect_uri = NEXT_PUBLIC_IDNOT_REDIRECT_URI_FIXED (stable)
      • scope = openid,profile, response_type = code
      • state = <state_signé> (depuis lAPI state dev3)
    • IdNot renvoie code (et le state validé côté backend) vers dev3, qui enchaîne selon next_url.
  • Pourquoi ça marche bien avec HMR

    • Le front nappelle pas dev3 directement depuis le navigateur: toujours /api (reverse-proxy Nginx).
    • Nginx masque les headers CORS upstream et réinjecte des headers valides dynamiquement (Origin dev4/local).
    • Le state est demandé via /api, donc indépendant du HMR.
  • Canonicalisation URL

    • Canonical sous-sous-chemin: /lecoffre/.
    • Next: basePath: '/lecoffre', assetPrefix: '/lecoffre', trailingSlash: true.
    • Nginx (dev4): rediriger /lecoffre/lecoffre/; proxy ^~ /lecoffre/ vers http://localhost:3004.
  • Validation (script scripts/deploy_front_ext.sh)

    • Vérifie: variables NEXT_PUBLIC_* (conteneur vs .env.master).
    • CORS dev3: OPTIONS 204 + en-têtes (A-C-A-Origin = dev4).
    • POST /api/v1/idnot/state: 200 + state présent.
    • Checks publics: /lecoffre = 301 → /lecoffre/, /lecoffre/ = 200.