Apparence
F1 — Authentification (inscription / connexion)
| Attribut | Contenu |
|---|---|
| Objectif | Contrôler l'accès à l'application ; identifier l'utilisateur et charger son rôle |
| Description | Écran de connexion bloquant tant qu'aucune session n'est active. Deux parcours : Connexion (email + mot de passe) et Créer un compte (nom, prénom, email, mot de passe, fonction, entité) |
| Utilisateurs | Tous |
| Préconditions | Aucune session active |
| Règles métier | RG-01, RG-02 |
| Limitations connues | Un nouvel inscrit obtient le rôle par défaut sans organisation : tant qu'un rattachement n'est pas fait, il ne voit aucune donnée, et aucun écran d'onboarding ne le permet encore → Dette technique, Q3 |
| Critères d'acceptation | Étant donné un compte valide quand je me connecte alors je vois l'application avec les permissions de mon rôle |
🛠️ Détails techniques (v2)
| Attribut | Contenu |
|---|---|
| Description (techn.) | Feature auth (ex-ModalIdentification v1) ; session Better Auth |
| Scénario — connexion | 1. Saisie email + mot de passe → 2. authClient.signIn.email (Better Auth) → 3. query getCurrentUser charge l'identité (rôle, organizationId) → 4. accès accordé, toast de bienvenue |
| Scénario — inscription | 1. Saisie du formulaire → 2. authClient.signUp.email avec métadonnées → 3. rôle testeur (ex-metier) par défaut → 4. si requireEmailVerification activé : écran « Vérification requise » ; sinon session ouverte |
| Erreurs | « Email ou mot de passe incorrect » ; « Un compte existe déjà avec cet email » ; validations Zod |
| Validations | Schéma Zod partagé (@recette/validators) : email, longueur mot de passe, nom/prénom/email obligatoires |
| Données | Better Auth (composant Convex) — identité + organizationId |