netgescon-day0/app/Notifications/NetGesconResetPasswordNotification.php

51 lines
2.0 KiB
PHP

<?php
namespace App\Notifications;
use Filament\Auth\Notifications\ResetPassword as FilamentResetPassword;
use Filament\Facades\Filament;
use Illuminate\Notifications\Messages\MailMessage;
class NetGesconResetPasswordNotification extends FilamentResetPassword
{
/**
* Non implementa ShouldQueue per garantire l'invio immediato e sincrono via SMTP,
* eliminando il rischio di blocco nella tabella jobs in assenza di daemon queue:work.
*/
public function toMail($notifiable): MailMessage
{
$url = $this->resetUrl($notifiable);
$userName = $notifiable->name ? trim((string) $notifiable->name) : 'Utente NetGescon';
return (new MailMessage)
->subject('NetGescon - Reimpostazione della Password')
->greeting("Ciao {$userName},")
->line('Abbiamo ricevuto una richiesta di reimpostazione della password per il tuo account su NetGescon.')
->action('Reimposta Password', $url)
->line('Questo link di sicurezza per la reimpostazione della password scadrà tra 60 minuti.')
->line('Se non sei stato tu a richiedere la reimpostazione della password, non preoccuparti: puoi ignorare questo messaggio e la tua password attuale rimarrà invariata.')
->salutation('Cordiali saluti, lo Staff di NetGescon');
}
protected function resetUrl($notifiable): string
{
if (! empty($this->url)) {
return $this->url;
}
try {
$panel = Filament::getCurrentOrDefaultPanel();
if ($panel && method_exists($panel, 'getResetPasswordUrl')) {
return $panel->getResetPasswordUrl($this->token, $notifiable);
}
} catch (\Throwable) {
// fallback al route nominato
}
return url(route('filament.admin-filament.auth.password-reset.reset', [
'token' => $this->token,
'email' => $notifiable->getEmailForPasswordReset(),
], false));
}
}