← Reverie Minecraft

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.

ColonneTypeContraintesDescription
idUUIDclé primaire, générée par le systèmeIdentifiant interne immuable
emailchaînerequise, uniqueIdentifiant de connexion normalisé
passwordchaînerequise, non exposéeHash du mot de passe ; jamais le mot de passe en clair
display_namechaînerequisePseudo 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.