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 Session | Durée | Expiration |
|---|---|---|
| Standard (sans “Remember Me”) | 7 jours | expiresAt = now + 7 jours |
| Persistante (avec “Remember Me”) | 30 jours | expiresAt = now + 30 jours |
| OAuth (Google/GitHub) | 7 jours | expiresIn = 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
Hook après Connexion
- Après la création de la session par Better Auth
- Si le paramètre
rememberesttrue - Alors mettre à jour
expiresAtdans 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
rememberau backend
Composable useAuth
📊 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
httpOnlyetsecure - Les sessions doivent être révoquables depuis les paramètres utilisateur
✅ Critères d’Acceptation
- ✅ La case “Se souvenir de moi” est présente dans le formulaire de connexion
- ✅ Le paramètre
rememberest transmis du frontend au backend - ✅ Les sessions avec “remember me” ont une expiration de 30 jours
- ✅ Les sessions sans “remember me” ont une expiration de 7 jours
- ✅ La session persiste après fermeture du navigateur si “remember me” est coché
- ✅ La documentation Mintlify est mise à jour
- ✅ Les tests unitaires backend passent
- ✅ Les tests Playwright UI passent