petitspas/docs/14_NOTE-BACKEND-CONFIG-SETUP.md
Julien Martin 31857ec891 docs(#14): note back config/setup + frontend parsing erreurs
- docs/14_NOTE-BACKEND-CONFIG-SETUP.md : modifs à faire côté back (UUID system)
- configuration_service : parsing défensif des réponses d'erreur (évite JSNull)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 16:10:04 +01:00

1.7 KiB
Raw Blame History

Ticket #14 Note pour modifications backend

Contexte : Première connexion admin → panneau Paramètres, déblocage après clic sur « Sauvegarder ». Le front appelle POST /api/v1/configuration/setup/complete au clic sur Sauvegarder.

Problème

Erreur renvoyée par le back :
invalid input syntax for type uuid: "system"

  • Le controller fait const userId = req.user?.id || 'system' puis markSetupCompleted(userId).
  • Le service set() fait config.modifiePar = { id: userId } ; la colonne modifie_par est une FK UUID vers users.
  • La chaîne "system" nest pas un UUID valide → erreur PostgreSQL.

Modifications à apporter au backend

Option A Accepter labsence dutilisateur (recommandé si la route peut être appelée sans JWT)

  1. config.controller.ts (route completeSetup)

    • Remplacer :
      const userId = req.user?.id || 'system';
    • Par :
      const userId = req.user?.id ?? null;
  2. config.service.ts (markSetupCompleted)

    • Changer la signature :
      async markSetupCompleted(userId: string | null): Promise<void>
    • Et appeler :
      await this.set('setup_completed', 'true', userId ?? undefined);
    • Dans set(), ne pas remplir modifiePar quand userId est absent (déjà le cas si if (userId)).

Option B Imposer un utilisateur authentifié

  • Activer le guard JWT (et éventuellement RolesGuard) sur POST /configuration/setup/complete pour que req.user soit toujours défini, et garder userId = req.user.id (plus de fallback 'system').

Une fois le back modifié, le flux « Sauvegarder » → déblocage des panneaux fonctionne sans erreur.