3 KiB
3 KiB
Système d'Authentification par Mot de Passe
Résumé des modifications
J'ai implémenté un système d'authentification par mot de passe en complément du système OTP existant. Voici les principales modifications :
🔧 Nouveaux endpoints API
/api/auth/signin-password (POST)
- Permet la connexion avec email/mot de passe
- Retourne une session et définit un cookie httpOnly
access_token - Effectue les mêmes vérifications de sécurité que le système OTP (staff/revocation)
/api/auth/password-update (POST)
- Met à jour le mot de passe d'un utilisateur connecté
- Marque l'utilisateur comme ayant un mot de passe (
user_metadata.hasPassword = true) - Exige un mot de passe d'au moins 12 caractères
/api/auth/password-status (GET)
- Récupère le statut du mot de passe pour un utilisateur connecté
- Retourne
{ hasPassword: boolean }
🎨 Interface utilisateur
Page de sécurité (/compte/securite)
- ✅ La card de changement de mot de passe est maintenant fonctionnelle
- ✅ Utilise les endpoints API sécurisés au lieu de Supabase directement
- ✅ Affiche le statut du mot de passe (défini/non défini)
- ⚠️ Section 2FA temporairement désactivée comme demandé
Page de connexion (/signin)
- ✅ Nouveau toggle pour choisir entre "Code par e-mail" et "Mot de passe"
- ✅ Mode mot de passe : champs email + password
- ✅ Mode OTP : comportement existant inchangé
- ✅ Interface cohérente avec le design existant
🔐 Sécurité
- Les mots de passe sont gérés par Supabase Auth (chiffrement automatique)
- Les mêmes vérifications de révocation s'appliquent aux deux modes d'auth
- Les cookies
access_tokenhttpOnly maintiennent la sécurité de session - Minimum 12 caractères pour les mots de passe
📋 Utilisation
Pour les utilisateurs
- Définir un mot de passe : Aller sur
/compte/securite→ section "Mot de passe (facultatif)" - Se connecter : Sur
/signin, choisir "Mot de passe" au lieu de "Code par e-mail"
Pour les développeurs
- Les endpoints existants n'ont pas été modifiés
- Le middleware et la gestion des sessions restent identiques
- Les métadonnées utilisateur incluent maintenant
hasPassword: truequand applicable
✅ Tests à effectuer
- Créer un mot de passe depuis la page de sécurité
- Vérifier que le statut "Mot de passe défini" s'affiche
- Se connecter avec email/mot de passe
- Vérifier que l'ancien système OTP fonctionne toujours
- Tester avec un utilisateur staff
- Tester avec un utilisateur révoqué
🚀 Prochaines étapes suggérées
- Réinitialisation de mot de passe : Endpoint pour changer un mot de passe oublié
- 2FA : Réactiver et intégrer la double authentification
- Politique de mot de passe : Ajouter des règles de complexité configurables
- Audit : Logger les tentatives de connexion par mot de passe
Le système est maintenant prêt à utiliser avec les deux modes d'authentification fonctionnels ! 🎉