feat(admin): fondation auth de l'application d'administration #7
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/admin-auth"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Regroupée dans #15 (une seule PR pour tout le bloc « application d'administration » : auth + scaffold + métriques + monitoring + tri des corrections). Fermée.
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>kyuno referenced this pull request2026-08-28 12:45:23 +02:00
Pull request closed