batchCooking/packages/shared/src/schemas
Nicolas c3d2ac7e8e feat(admin): fondation auth de l'application d'administration
Premiere brique de l'app d'admin independante : une surface /admin/*
ajoutee a apps/api, avec une authentification totalement distincte de
celle des utilisateurs.

- Table AdminUser isolee (aucune relation vers UserProfile), migration
  20260828120000_admin_user.
- lib/admin-jwt.ts : sign/verify d'un JWT admin, secret ADMIN_JWT_SECRET
  propre (jamais interchangeable avec JWT_SECRET).
- middlewares/require-admin.ts : cookie admin_session dedie, re-check
  tokenVersion, echoue ferme si ADMIN_JWT_SECRET absent (posture
  requireInternalWorker). res.locals.adminUser type via AdminLocals.
- modules/admin/ : admin-auth.{routes,service}.ts (POST /login, POST
  /logout, GET /me), admin.routes.ts agregateur monte /admin. Pas de
  signup expose.
- lib/safe-admin.ts : mapping AdminUser -> AdminUserView (drop passwordHash
  + tokenVersion, dates ISO).
- scripts/create-admin.ts : creation du 1er admin hors-bande (flags ou
  ADMIN_INITIAL_*).
- CORS : setupCore accepte string[] ; app.ts autorise CORS_ORIGIN +
  ADMIN_CORS_ORIGIN.
- Shared : schemas/admin.ts (adminLoginSchema), types/admin.ts
  (AdminUserView).
- Env : ADMIN_JWT_SECRET (optionnel), ADMIN_COOKIE_NAME, ADMIN_CORS_ORIGIN,
  ADMIN_INITIAL_* ; .env.example, .env.test.example, docker-compose.yml,
  ci.yml mis a jour.
- reset-db.ts truncate admin_users.
- Tests Mocha admin-auth.test.ts : 400 sans body, 401 email inconnu /
  mauvais mdp, login OK (cookie pose, lastLoginAt, pas de hash/tokenVersion
  dans la reponse), /me derriere requireAdmin, logout, et un cookie
  `session` d'utilisateur normal ne donne pas acces a /admin/*.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-28 23:36:29 +02:00
..
account.ts Shared: types/schémas/codes d'erreur pour foyer admin/invitation + suppression de compte (step 1/8) 2026-08-17 10:37:50 +02:00
admin.ts feat(admin): fondation auth de l'application d'administration 2026-08-28 23:36:29 +02:00
auth.ts Centralize error handling + code quality pass (comments, SCSS theming) (#7) 2026-08-16 18:40:53 +02:00
cooking-session.ts feat(cooking): moteur d'optimisation des etapes de batch-cooking 2026-08-28 19:06:24 +02:00
household.ts feat(recipes): préférences de sources par foyer + distinction officielle/non-officielle 2026-08-20 09:22:54 +02:00
planning.ts feat(planning): dialog de sélection de recette, création de planning, assignation avec portions 2026-08-19 14:44:02 +02:00
preferences.ts Shared + migration: table user_preference (thème clair/sombre/système) (step 1/4) 2026-08-17 15:55:18 +02:00
profile.ts feat(recipes): catalogue v2 - visibilité, favoris, régimes et catalogue d'ingrédients exhaustif 2026-08-18 09:29:11 +02:00
recipe.ts feat(recipes): permet d'associer ingredients/ustensiles a une correction de technique 2026-08-26 21:51:45 +02:00
shopping-list.ts feat(shopping-list): liste de courses agrégée depuis le planning (#73) 2026-08-22 22:45:06 +02:00
sources.ts feat(recipes): parcourir et prévisualiser les sources externes (étape 1/4) 2026-08-20 15:51:16 +02:00
tech-step-worker.ts feat(tech-steps): fiabilise la détection des tech steps (corpus + LLM + corrections utilisateur) (#66) 2026-08-22 15:57:57 +02:00