51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Pages\Auth;
|
|
|
|
use App\Filament\Support\CheerfulNotification;
|
|
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
|
|
use Filament\Actions\Action;
|
|
use Filament\Auth\Pages\EmailVerification\EmailVerificationPrompt;
|
|
use Filament\Notifications\Notification;
|
|
use Filament\Support\Enums\Width;
|
|
|
|
class EmailVerification extends EmailVerificationPrompt
|
|
{
|
|
public function getMaxContentWidth(): Width
|
|
{
|
|
return Width::ExtraLarge;
|
|
}
|
|
|
|
public function resendNotificationAction(): Action
|
|
{
|
|
return Action::make('resendNotification')
|
|
->link()
|
|
->label(__('filament-panels::auth/pages/email-verification/email-verification-prompt.actions.resend_notification.label').'.')
|
|
->size('sm')
|
|
->action(function (): void {
|
|
try {
|
|
$this->rateLimit(2);
|
|
} catch (TooManyRequestsException $exception) {
|
|
$this->getRateLimitedNotification($exception)?->send();
|
|
|
|
return;
|
|
}
|
|
|
|
$this->sendEmailVerificationNotification($this->getVerifiable());
|
|
|
|
CheerfulNotification::success(
|
|
'Mail Meluncur! 📧🚀',
|
|
'Tautan verifikasi baru sudah dikirim ke alamat surelmu. Cek inbox (atau spam) ya! 😉✨'
|
|
)->send();
|
|
});
|
|
}
|
|
|
|
protected function getRateLimitedNotification(TooManyRequestsException $exception): ?Notification
|
|
{
|
|
return CheerfulNotification::danger(
|
|
'Pelan-pelan ya ⏳',
|
|
'Permintaan terlalu sering. Tunggu sebentar lalu coba lagi dalam '.$exception->secondsUntilAvailable.' detik.'
|
|
)->send();
|
|
}
|
|
}
|