Commit graph

1 commit

Author SHA1 Message Date
Imugiii
b896cf9677 feat(borne): cablage de la borne sur l'API (CORS + data.js)
All checks were successful
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 20s
CI / php-lint (pull_request) Successful in 23s
CI / static-tests (pull_request) Successful in 50s
CI / static-tests (push) Successful in 46s
CI / js-tests (push) Successful in 24s
CI / secret-scan (pull_request) Successful in 9s
CI / js-tests (pull_request) Successful in 25s
La borne kiosk consomme desormais l'API REST catalogue au lieu des fichiers JSON
statiques (docs/api/conventions.md 5.2 et 10).

- Middleware CORS (App\Core\Cors) : origine UNIQUE et EXACTE (CORS_ALLOWED_ORIGIN,
  sans joker), scope /api/, GET/POST/OPTIONS, Content-Type, SANS credentials,
  fail-closed. Cable dans index.php : preflight OPTIONS -> 204 avant le routeur,
  decoration de la reponse y compris le 500 du catch (erreur lisible cross-origin).
  CorsTest (10 tests).
- data.js : URLs -> /api/categories|products|menus, deballe l'enveloppe {data},
  traduit la forme canonique (name/price_cents/image_path) vers la forme borne
  (nom/prix/image/type), regroupe par slug de categorie, glisse les menus sous la
  cle 'menus'. Signatures publiques inchangees (pages intactes). findProduct
  desambigue par categorie : product et menu ont des espaces d'id distincts (tables
  auto-increment separees), un id peut donc collisionner. data.test.js (10 tests).
- loadAllergens reste statique (data/allergens.json) ; consommation des slots
  /api/menus + refactor du composeur differes.
2026-06-18 14:43:01 +00:00