# 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
