# Réinitialiser un mot de passe

# Réinitialiser un mot de passe

> _Dernière mise à jour : 2026-05-10_

## Self-service (utilisateur)

Pas implémenté pour l'instant — pas d'envoi de mail magic-link en self-service. Si tu oublies ton mot de passe, contacte un admin.

## Via admin (toi)

Deux options :

### Option 1 — Bouton "Send password reset"

`/admin` → Users → ouvrir un user → bouton "Renvoyer mail de reset".

Appelle `POST /api/admin/send-password-reset/:userId` qui :
1. Génère un token de reset
2. Envoie un mail à l'adresse en BDD avec le lien `/reset-password?token=...`

⚠️ Nécessite SMTP configuré (`SMTP_HOST` non vide). Sans SMTP, ça plantera silencieusement (à vérifier dans les logs).

### Option 2 — Reset manuel via DB

Si SMTP indisponible :

```bash
docker exec -it boardgame-referee sh
sqlite3 /app/data/database.db
> UPDATE users SET password_hash = '<nouveau-hash-argon2>' WHERE username = 'foo';
```

Pour générer un hash argon2 :

```bash
docker exec -it boardgame-referee node -e "
import('argon2').then(a => a.hash('nouveau-mdp')).then(console.log)
"
```

## Page `/reset-password`

Accepte un `?token=...` depuis l'URL. Vérifie le token, demande un nouveau mot de passe, le hashe (argon2) et update la BDD. Le token est consommé (one-shot).

## Si tu te bloques toi-même (admin)

Hash argon2 directement la nouvelle valeur en CLI comme ci-dessus, ou redémarre le container avec `FIRST_ADMIN_USERNAME` + `FIRST_ADMIN_PASSWORD` mis à jour — au boot, l'app crée/réinitialise l'admin défini par ces vars.