batchCooking/apps/api/src/lib/safe-profile.ts
Nicolas 1d03effc77 API: endpoints foyer/profil (nom, régime, allergènes) (step 2/6)
- GET/PATCH /house/current — renomme le foyer de l'utilisateur connecté.
  PATCH avec houseId null -> 404 HOUSE_NOT_FOUND.
- PATCH /profile/diet { dietId: number | null } — régime du profil ;
  null l'efface (étape skippable du parcours). dietId invalide ->
  404 DIET_NOT_FOUND.
- GET/PATCH /profile/allergies — allergènes/intolérances, liste d'IDs ;
  PATCH remplace l'ensemble complet (pas une fusion, cohérent avec un
  multi-select). ID invalide -> 404 ALLERGY_NOT_FOUND.
- 3 nouveaux ErrorCode (4041-4043) + libellés fr.
- Extraction de toSafeProfile() dans src/lib/safe-profile.ts —
  auparavant dupliqué dans auth.service.ts et require-auth.ts,
  profile.service.ts le réutilise aussi.
- Tests Mocha (28 passing) + Cucumber (15 scenarios) — même convention
  que le reste, doc README.

Deuxième commit de la feature profil/foyer/régime/allergènes —
composants front partagés dans le commit suivant.
2026-08-16 23:18:46 +02:00

14 lines
630 B
TypeScript

import type { SafeUserProfile } from "@batch-cooking/shared";
import type { UserProfile } from "@prisma/client";
/**
* Strips `passwordHash` off a Prisma `UserProfile` before it's ever sent to
* a client. Shared by every module that hands a profile back to the
* caller (`auth.service.ts`, `require-auth.ts`, `profile.service.ts`) —
* previously duplicated inline in each, consolidated here so there's one
* place this security-relevant stripping happens.
*/
export function toSafeProfile(profile: UserProfile): SafeUserProfile {
const { passwordHash: _passwordHash, ...safeProfile } = profile;
return safeProfile;
}