Documentation
Lecture seule des fichiers markdown du projet
website / docs / users.md
Gestion des utilisateurs
Objectif
Cette documentation prépare un premier modèle de compte pour le site Reverie. Il est volontairement limité à l'identification et à l'authentification : les rôles, profils détaillés, sessions, vérification d'email et récupération de compte ne font pas encore partie de ce modèle.
Comportement fonctionnel
Un utilisateur peut créer un compte avec :
- une adresse email, utilisée pour se connecter ;
- un mot de passe, transmis uniquement au serveur ;
- un pseudo public (
display_name).
L'identifiant technique est créé par le système. L'email doit être unique après normalisation (minuscules et espaces supprimés). Le pseudo est affiché aux joueurs ; il n'est pas déclaré unique dans ce premier modèle, afin de ne pas imposer une règle métier non décidée.
L'authentification vérifie la paire email / mot de passe. Ni le mot de passe ni son hash ne doivent apparaître dans les réponses d'API, les logs, le navigateur ou la documentation.
Modèle de données
La table PostgreSQL est nommée users. Les noms techniques des colonnes restent
en anglais.
| Colonne | Type | Contraintes | Description |
|---|---|---|---|
id | UUID | clé primaire, générée par le système | Identifiant interne immuable |
email | chaîne | requise, unique | Identifiant de connexion normalisé |
password | chaîne | requise, non exposée | Hash du mot de passe ; jamais le mot de passe en clair |
display_name | chaîne | requise | Pseudo public de l'utilisateur |
Le nom password répond au modèle fonctionnel demandé, mais sa valeur stockée
est obligatoirement un hash robuste, par exemple Argon2id. Aucune migration ne
doit créer ou conserver une colonne contenant des mots de passe lisibles.
Schéma Prisma cible
model User {
id String @id @default(uuid()) @db.Uuid
email String @unique @db.VarChar(254)
password String @db.VarChar(255)
display_name String
@@map("users")
}
Après validation de ce modèle et une fois Prisma configuré, la migration pourra
être créée avec npx prisma migrate dev --name add_users. Elle doit être relue
avant son application, puis appliquée en production avec npx prisma migrate deploy.
Décisions à prendre avant l'implémentation
- Règles de longueur et de caractères autorisés pour
display_name. - Méthode de vérification de l'adresse email.
- Politique de renouvellement ou de réinitialisation du mot de passe.
- Modèle de session et éventuels rôles ou permissions.