docs: add HMR + IdNot + dev3 via state overview (2025-09-24)
This commit is contained in:
parent
20877250e2
commit
09fe6b89ff
41
docs/HMR_IDNOT_STATE.md
Normal file
41
docs/HMR_IDNOT_STATE.md
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
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": "<state_signé>" }`. 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 = <state_signé>` (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.
|
||||||
|
- Les `NEXT_PUBLIC_*` pilotent IdNot et `next_url`; endpoints de debug: `/api/env` et `/env`.
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user