# UserWallet – Validation stricte CNIL **Author:** Équipe 4NK **Date:** 2026-01-28 ## Objectif Implémenter la validation stricte CNIL pour les contrats et champs, permettant de transformer les warnings en erreurs selon la politique métier. ## Motivations - Conformité CNIL stricte selon la politique métier - Possibilité d'activer/désactiver la validation stricte - Bloquer l'utilisation des contrats/champs non conformes CNIL en mode strict ## Modifications ### `src/utils/cnilValidation.ts` - Ajout de `CNILValidationPolicy` pour configurer la validation - Ajout de `DEFAULT_CNIL_POLICY` (mode non strict par défaut) - Ajout de `STRICT_CNIL_POLICY` (mode strict avec tous les champs requis) - Extension de `validateCNILFields()` pour accepter une politique - Extension de `validateContractCNIL()` pour accepter une politique - Extension de `validateChampCNIL()` pour accepter une politique - Ajout de `getCNILPolicy()` pour récupérer la politique depuis le localStorage - Ajout de `setCNILPolicy()` pour stocker la politique ### `src/services/graphResolver.ts` - Mise à jour de `addContrat()` pour utiliser `getCNILPolicy()` - Mise à jour de `addChamp()` pour utiliser `getCNILPolicy()` - Rejet des contrats/champs non conformes en mode strict (suppression du cache) ## Utilisation ### Mode par défaut (non strict) ```typescript import { validateContractCNIL, DEFAULT_CNIL_POLICY } from './utils/cnilValidation'; const validation = validateContractCNIL(contrat, DEFAULT_CNIL_POLICY); // Génère des warnings mais n'échoue pas ``` ### Mode strict ```typescript import { validateContractCNIL, STRICT_CNIL_POLICY } from './utils/cnilValidation'; const validation = validateContractCNIL(contrat, STRICT_CNIL_POLICY); // Génère des erreurs si les champs CNIL sont manquants if (!validation.valid) { // Contrat rejeté } ``` ### Configuration personnalisée ```typescript import { setCNILPolicy, getCNILPolicy } from './utils/cnilValidation'; // Activer le mode strict setCNILPolicy(STRICT_CNIL_POLICY); // Récupérer la politique actuelle const policy = getCNILPolicy(); ``` ## Politique métier La politique CNIL peut être configurée via : - `strict`: Mode strict (warnings → errors) - `requireRaisonsUsageTiers`: Require `raisons_usage_tiers` - `requireRaisonsPartageTiers`: Require `raisons_partage_tiers` - `requireConditionsConservation`: Require `conditions_conservation` En mode strict, les contrats/champs non conformes sont rejetés et retirés du cache du graphe. ## Références - `features/userwallet-champs-obligatoires-cnil.md` - `userwallet/docs/specs-champs-obligatoires-cnil.md`