Posta configurabile dall'app, contatti dei proclamatori, conferma email
- Server di posta in Impostazioni (password cifrata, email di prova): se compilato prende il posto del .env; non si esporta e l'import XML non lo cancella. MAIL_SCHEME=tls nel .env.example non era valido per Laravel 11. - Proclamatori con email e telefono facoltativi, cifrati, nell'XML e cancellati dall'anonimizzazione; il numero apre WhatsApp. - Dopo l'assegnazione un riquadro in evidenza con il link del PDF, "Invia su WhatsApp" con il messaggio pronto e la scelta "inviato / non ancora", che resta finché non si sceglie. - Conferma dell'email obbligatoria per tutti gli utenti, anche esistenti: email in italiano, link valido senza login, nuova conferma a ogni cambio di indirizzo, "Reinvia conferma" in Utenti. Senza conferma restano raggiungibili profilo, cambio password e, per l'admin, il server di posta; comando utenti:conferma-email per l'emergenza. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,10 @@
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\Setting;
|
||||
use App\Services\ConfigurazionePosta;
|
||||
use Illuminate\Auth\Middleware\EnsureEmailIsVerified;
|
||||
use Illuminate\Auth\Notifications\VerifyEmail;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Queue;
|
||||
@@ -24,7 +28,42 @@ class AppServiceProvider extends ServiceProvider
|
||||
// un'ora: senza questo, ogni job usava le impostazioni lette dal primo,
|
||||
// anche dopo che l'amministratore le aveva cambiate dal browser o un
|
||||
// ripristino le aveva sostituite.
|
||||
Queue::before(fn () => Setting::flushCache());
|
||||
Queue::before(function () {
|
||||
Setting::flushCache();
|
||||
|
||||
// Anche il server di posta: cambiato dal browser, il worker
|
||||
// continuava a usare quello del primo invio.
|
||||
if ($this->app->resolved('mail.manager')) {
|
||||
app(ConfigurazionePosta::class)->applica();
|
||||
}
|
||||
});
|
||||
|
||||
// L'email di conferma in italiano. Il link resta quello di Laravel
|
||||
// (firmato, scade dopo auth.verification.expire minuti) e porta a
|
||||
// VerificaEmailController::conferma, che funziona anche senza login.
|
||||
VerifyEmail::toMailUsing(function ($utente, string $link) {
|
||||
$minuti = (int) config('auth.verification.expire', 60);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject('Conferma il tuo indirizzo email — TerManager2')
|
||||
->greeting('Ciao ' . $utente->name . ',')
|
||||
->line('per usare TerManager2 conferma che questo indirizzo email è tuo.')
|
||||
->action('Conferma l\'indirizzo', $link)
|
||||
->line("Il link vale {$minuti} minuti. Se è scaduto, entra in TerManager2 e chiedine uno nuovo.")
|
||||
->line('Se non sai di cosa si tratta, ignora questa email.')
|
||||
->salutation('TerManager2');
|
||||
});
|
||||
|
||||
// Le richieste di Livewire non ripassano dal gruppo di rotte della
|
||||
// pagina: senza, una scheda aperta prima del blocco continuerebbe a
|
||||
// lavorare con un'email non confermata.
|
||||
Livewire::addPersistentMiddleware([EnsureEmailIsVerified::class]);
|
||||
|
||||
// Il server di posta configurato in Impostazioni prende il posto di
|
||||
// quello del .env, appena Laravel crea il sistema di posta.
|
||||
$this->app->afterResolving('mail.manager', function ($manager) {
|
||||
app(ConfigurazionePosta::class)->applica($manager);
|
||||
});
|
||||
|
||||
// Pin generated URLs to APP_URL.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user