38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# 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"` n’est pas un UUID valide → erreur PostgreSQL.
|
||
|
||
## Modifications à apporter au backend
|
||
|
||
**Option A – Accepter l’absence d’utilisateur (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.
|