51 lines
2.0 KiB
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));
|
|
}
|
|
}
|