simedkom/app/Filament/Pages/Auth/EmailVerification.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();
}
}