Files
mesreleves-php/app/Providers/AppServiceProvider.php
T
yann64 07ab2a7063 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>
2026-06-04 18:59:18 +02:00

39 lines
1.6 KiB
PHP

<?php
namespace App\Providers;
use App\Services\SiteSettingsService;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register(): void {}
public function boot(): void
{
// Partage les paramètres globaux du site avec toutes les vues
View::share('siteLogoUrl', SiteSettingsService::logoUrl());
View::share('registrationEnabled', SiteSettingsService::registrationEnabled());
View::share('siteName', SiteSettingsService::siteName());
// Remplace config('app.name') par le titre défini dans les paramètres
config(['app.name' => SiteSettingsService::siteName()]);
// Applique la configuration SMTP si elle est définie dans les paramètres
if (SiteSettingsService::smtpConfigured()) {
$smtp = SiteSettingsService::smtpConfig();
config([
'mail.default' => 'smtp',
'mail.mailers.smtp.host' => $smtp['host'],
'mail.mailers.smtp.port' => (int) ($smtp['port'] ?? 587),
'mail.mailers.smtp.encryption' => $smtp['encryption'] ?: null,
'mail.mailers.smtp.username' => $smtp['username'] ?? null,
'mail.mailers.smtp.password' => $smtp['password'] ?? null,
'mail.from.address' => $smtp['from_address'] ?? null,
'mail.from.name' => $smtp['from_name'] ?? SiteSettingsService::siteName(),
]);
}
}
}