Skip to main content

Spécifications d’Authentification - Remora Trading

🎯 Vue d’ensemble

Ce document définit les spécifications pour le système d’authentification de Remora Trading, incluant la fonctionnalité “Se souvenir de moi” (Remember Me).

📝 TERMINOLOGIE

Session

  • Session standard : Session avec expiration de 7 jours (par défaut)
  • Session persistante : Session avec expiration de 30 jours (quand “Se souvenir de moi” est coché)
  • expiresAt : Date d’expiration de la session dans la base de données
  • expiresIn : Durée de vie de la session en secondes (configuration Better Auth)

Remember Me

  • Case à cocher : Interface utilisateur permettant de choisir une session persistante
  • Session persistante : Session avec durée de vie prolongée (30 jours au lieu de 7 jours)

🔐 Fonctionnalités d’Authentification

Connexion avec Email et Mot de Passe

Scénario 1: Connexion sans “Se souvenir de moi”

  • Étant donné un utilisateur avec email et mot de passe valides
  • Et la case “Se souvenir de moi” n’est pas cochée
  • Quand l’utilisateur se connecte
  • Alors une session est créée avec expiration de 7 jours
  • Et la session expire après 7 jours d’inactivité

Scénario 2: Connexion avec “Se souvenir de moi”

  • Étant donné un utilisateur avec email et mot de passe valides
  • Et la case “Se souvenir de moi” est cochée
  • Quand l’utilisateur se connecte
  • Alors une session est créée avec expiration de 30 jours
  • Et la session expire après 30 jours d’inactivité
  • Et la session est persistante même après fermeture du navigateur

Scénario 3: Connexion avec OAuth (Google/GitHub)

  • Étant donné un utilisateur qui choisit de se connecter avec Google ou GitHub
  • Quand l’utilisateur complète le flux OAuth
  • Alors une session est créée avec expiration de 7 jours (par défaut)
  • Et la case “Se souvenir de moi” n’est pas disponible pour OAuth

🔄 Gestion des Sessions

Durées de Session

Type de SessionDuréeExpiration
Standard (sans “Remember Me”)7 joursexpiresAt = now + 7 jours
Persistante (avec “Remember Me”)30 joursexpiresAt = now + 30 jours
OAuth (Google/GitHub)7 joursexpiresIn = 7 jours (config Better Auth)

Mise à Jour de Session

  • La session est automatiquement rafraîchie selon updateAge (1 jour)
  • Si “Se souvenir de moi” est coché, la session est prolongée à 30 jours lors du rafraîchissement
  • Si “Se souvenir de moi” n’est pas coché, la session reste à 7 jours maximum

🛠️ Implémentation Technique

Backend (Better Auth)

Configuration de Session

session: {
  expiresIn: 60 * 60 * 24 * 7, // 7 jours par défaut
  updateAge: 60 * 60 * 24, // 1 jour
}

Hook après Connexion

  • Après la création de la session par Better Auth
  • Si le paramètre remember est true
  • Alors mettre à jour expiresAt dans la base de données à now + 30 jours
  • Sinon, laisser expiresAt à la valeur par défaut (7 jours)

Frontend

Formulaire de Connexion

  • Le formulaire contient une case à cocher “Se souvenir de moi”
  • La valeur de la case est passée au composable useAuth().signIn()
  • Le composable transmet le paramètre remember au backend

Composable useAuth

signIn(email: string, password: string, remember?: boolean)

📊 Tests Requis

Tests Unitaires Backend

  • Test de création de session standard (7 jours)
  • Test de création de session persistante (30 jours)
  • Test de mise à jour de session avec “remember me”
  • Test de validation du paramètre remember

Tests Playwright UI

  • Test de connexion sans “Se souvenir de moi”
  • Test de connexion avec “Se souvenir de moi”
  • Test de persistance de session après fermeture du navigateur
  • Test de vérification de l’expiration de session

📚 Documentation Mintlify

Section à Ajouter

  • Titre : “Se souvenir de moi”
  • Description : Explication de la fonctionnalité et de son impact sur la durée de session
  • Exemples : Code d’utilisation frontend et backend
  • Durées : Tableau des durées de session selon le type

🔒 Sécurité

Considérations

  • Les sessions persistantes (30 jours) augmentent le risque de session compromise
  • Recommandation : Utiliser HTTPS uniquement
  • Les cookies de session doivent être httpOnly et secure
  • Les sessions doivent être révoquables depuis les paramètres utilisateur

✅ Critères d’Acceptation

  1. ✅ La case “Se souvenir de moi” est présente dans le formulaire de connexion
  2. ✅ Le paramètre remember est transmis du frontend au backend
  3. ✅ Les sessions avec “remember me” ont une expiration de 30 jours
  4. ✅ Les sessions sans “remember me” ont une expiration de 7 jours
  5. ✅ La session persiste après fermeture du navigateur si “remember me” est coché
  6. ✅ La documentation Mintlify est mise à jour
  7. ✅ Les tests unitaires backend passent
  8. ✅ Les tests Playwright UI passent