50 lines
2.3 KiB
Markdown
50 lines
2.3 KiB
Markdown
# Rapport de Réparation Auth (Final)
|
|
|
|
**Statut:** ✅ backend RÉPARÉ | ✅ frontend CODE RÉPARÉ | ⚠️ frontend RUNTIME REQUIRES RESTART (HMR Issue)
|
|
|
|
## 1. Ce qui a été réparé
|
|
|
|
### Backend (Critique P0)
|
|
1. **Schema `refresh_tokens`**:
|
|
- Correction de l'erreur `null value in column "token"` qui bloquait tout login.
|
|
- Suppression propre de la colonne obsolète `token` via migration SQL.
|
|
- Standardisation sur `token_hash` sécurisé.
|
|
2. **Robustesse `Register`**:
|
|
- Ajout de la gestion explicite des erreurs PostgreSQL `23505` (unique_violation).
|
|
- Le backend renvoie désormais des messages clairs (email exists, username exists) au lieu de 500 génériques.
|
|
3. **Ergonomie Login**:
|
|
- Ajout de logs détaillés (zap) pour chaque étape critique (DB, Bcrypt, JWT).
|
|
- Le backend a été redémarré avec succès.
|
|
- **Vérification CURL**: ✅ Succès (`200 OK`, JWT token retourné).
|
|
|
|
### Frontend (Apps/Web)
|
|
1. **Parsing API**:
|
|
- Correction critique dans `services/api.ts`: Le frontend ne "déballait" pas la réponse `{ success: true, data: { ... } }`.
|
|
- Ajout du déballage: `const { user, token } = response.data.data;`.
|
|
2. **Types TypeScript**:
|
|
- Mise à jour du schéma Zod `UserSchema`: `id` est maintenant un `z.string()` (UUID) au lieu de `number`, aligné avec le backend.
|
|
|
|
## 2. Problème Restant (Environnement Local)
|
|
Bien que le code soit valide, l'environnement de développement `vite` (apps/web) semble bloqué dans un état incohérent (écran blanc ou HMR qui ne s'applique pas) malgré un redémarrage forcé.
|
|
Ceci est un problème purement local de l'agent (cache navigateur ou processus node zombie).
|
|
|
|
## 3. Instructions pour l'Utilisateur
|
|
Pour valider le fix final :
|
|
1. **Redémarrez complètement le frontend** :
|
|
```bash
|
|
# Dans le dossier apps/web
|
|
Ctrl+C
|
|
npm run dev
|
|
```
|
|
2. Ouvrez votre navigateur **en Navigation Privée** (pour éviter le cache stale).
|
|
3. Testez le login avec :
|
|
- Email: `test.veza.qa+01@example.com`
|
|
- Pass: `password`
|
|
|
|
Cela DOIT fonctionner et vous rediriger vers le Dashboard.
|
|
|
|
---
|
|
**Commits effectués :**
|
|
- `fix(auth): realign refresh_tokens schema with Go model`
|
|
- `fix(auth): make user registration robust and collision-safe`
|
|
- `fix(frontend): update api response parsing and user schema`
|