Configuration SMTP et 2FA par code PIN e-mail

Paramètres du site :
- Nouvelle section "Serveur SMTP" avec host, port, chiffrement,
  identifiant, mot de passe, adresse/nom d'expéditeur
- Bouton "Envoyer un e-mail de test" (AJAX via Symfony EsmtpTransport) :
  tente la connexion + envoie un message réel à l'admin
- Badge "Configuré — 2FA actif" quand SMTP est en place
- Suppression de la configuration possible

Authentification 2FA :
- Si SMTP configuré : après validation identifiant/mot de passe,
  l'utilisateur est déconnecté, un PIN à 6 chiffres est généré,
  haché (bcrypt) et stocké en session, envoyé par e-mail (10 min)
- Page /2fa : saisie du PIN, bouton "Renvoyer le code", retour login
- Si l'envoi e-mail échoue : fallback sans 2FA (logue l'erreur)
- Si SMTP non configuré : login standard inchangé

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 18:59:18 +02:00
parent e6f4d0c565
commit 07ab2a7063
11 changed files with 564 additions and 19 deletions
+13
View File
@@ -60,6 +60,19 @@ class SiteSettingsService
}
}
// ── SMTP ─────────────────────────────────────────────────────────────────
public static function smtpConfig(): array
{
return self::get('smtp', []);
}
public static function smtpConfigured(): bool
{
$smtp = self::smtpConfig();
return ! empty($smtp['host']) && ! empty($smtp['port']);
}
// ── Titre du site ─────────────────────────────────────────────────────────
public static function siteName(): string