Checkpoint: Évolution v2 complète : nouveau profil Adhérent FEHAP, connexion locale par email/mot de passe (bcrypt), création manuelle d'utilisateurs par les gestionnaires, affectation d'établissements aux adhérents, page de choix de connexion (/login), refonte de la page Admin avec CRUD complet. 33 tests Vitest passés, zéro erreur TypeScript.

This commit is contained in:
Manus
2026-04-16 04:02:22 -04:00
parent 522d2e3c87
commit a58296774f
17 changed files with 2321 additions and 146 deletions

25
todo.md
View File

@@ -31,3 +31,28 @@
## Tests
- [x] Tests unitaires procédures tRPC (14 tests passés)
## Évolution v2 — Profil Adhérent FEHAP & Auth locale
### Base de données
- [x] Étendre enum sonumRole : ajouter "adherent"
- [x] Table local_users : id, userId (FK), passwordHash, createdAt
- [x] Vérifier que la table users supporte les comptes créés manuellement (sans openId OAuth)
### Backend tRPC
- [x] Procédure admin.createUser : créer un utilisateur manuellement (nom, email, rôle, mot de passe)
- [x] Procédure admin.listUsers : liste complète des utilisateurs avec rôle et établissements
- [x] Procédure admin.updateUser : modifier nom, email, rôle d'un utilisateur
- [x] Procédure admin.deleteUser : supprimer un utilisateur
- [x] Procédure admin.setAffectations : affecter un ou plusieurs établissements à un adhérent
- [x] Procédure admin.removeEtablissement : retirer un établissement d'un adhérent (inclus dans setAffectations)
- [x] Procédure auth.loginLocal : authentification par email + mot de passe (JWT session)
- [x] Middleware : les adhérents FEHAP voient uniquement leurs établissements affectés
### Interface
- [x] Page de choix de connexion : OAuth FEHAP vs Connexion locale
- [x] Formulaire de connexion locale (email + mot de passe)
- [x] Page admin : onglet "Gestion des utilisateurs" avec tableau et actions CRUD
- [x] Page admin : affectations établissements inline dans le tableau utilisateurs
- [x] Badge "Adhérent FEHAP" dans le header et la sidebar
- [x] Vue "Mes Établissements" filtrée pour les adhérents (uniquement les établissements affectés)