# Correction : Déconnexion automatique lors de la création d'un mot de passe ## 🐛 Problème Lorsqu'un utilisateur créait ou mettait à jour son mot de passe via la page **Compte > Sécurité**, il était automatiquement déconnecté de son compte. ## 🔍 Cause L'API `/api/auth/password-update` utilisait la méthode `admin.auth.admin.updateUserById()` de Supabase (Admin API) pour modifier le mot de passe. **Comportement de Supabase** : Par défaut, pour des raisons de sécurité, l'Admin API **invalide automatiquement toutes les sessions actives** d'un utilisateur lorsqu'on modifie son mot de passe. Ce comportement assume qu'un changement de mot de passe doit forcer une reconnexion. ## ✅ Solution Remplacement de l'Admin API par la méthode `supabase.auth.updateUser()` qui permet de mettre à jour le mot de passe **sans invalider la session active**. ### Changements apportés **Fichier** : `/app/api/auth/password-update/route.ts` #### Avant : ```typescript // Utilisation de l'Admin API (invalide la session) const admin = createClient(url, serviceKey); const { error: updErr } = await admin.auth.admin.updateUserById(userId, { password: newPassword, user_metadata: { ...session.user.user_metadata, hasPassword: true } }); ``` #### Après : ```typescript // Utilisation de updateUser() (préserve la session) const { error: updErr } = await supabase.auth.updateUser({ password: newPassword, data: { ...session.user.user_metadata, hasPassword: true } }); ``` ## 🎯 Résultat - ✅ L'utilisateur peut créer/modifier son mot de passe sans être déconnecté - ✅ La session reste active après la mise à jour - ✅ L'email de confirmation est toujours envoyé - ✅ Toutes les validations de sécurité du mot de passe sont conservées ## 📝 Notes techniques - **`updateUser()`** : Met à jour les informations de l'utilisateur authentifié via sa session active - **`admin.updateUserById()`** : Met à jour un utilisateur via l'Admin API (invalide toutes les sessions pour sécurité) La méthode `updateUser()` est appropriée ici car : 1. L'utilisateur est authentifié et modifie son propre mot de passe 2. Il n'y a pas de raison de le déconnecter immédiatement 3. C'est une action volontaire de l'utilisateur (pas une récupération de mot de passe compromise) ## 🔒 Sécurité Le changement de mot de passe reste sécurisé : - Validation stricte du mot de passe (12+ caractères, majuscules, minuscules, chiffres, caractères spéciaux) - Email de confirmation envoyé - L'utilisateur doit être authentifié pour accéder à cette API