HMR + IdNot + dev3 via state (mise à jour: 2025-09-24) Vue d’ensemble - 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 l’app 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": "" }`. CORS dynamique côté Nginx (dev3) autorise l’origine dev4. - Redirection IdNot avec state - URL d’autorisation: - 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 = ` (depuis l’API 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 n’appelle 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.