diff --git a/app/Exceptions/Service/User/TwoFactorAuthenticationTokenInvalid.php b/app/Exceptions/Service/User/TwoFactorAuthenticationTokenInvalid.php index 38771a453..d5f09884c 100644 --- a/app/Exceptions/Service/User/TwoFactorAuthenticationTokenInvalid.php +++ b/app/Exceptions/Service/User/TwoFactorAuthenticationTokenInvalid.php @@ -6,9 +6,9 @@ use App\Exceptions\DisplayException; class TwoFactorAuthenticationTokenInvalid extends DisplayException { - /** - * TwoFactorAuthenticationTokenInvalid constructor. - */ + public string $title = 'Invalid 2FA Code'; + public string $icon = 'tabler-2fa'; + public function __construct() { parent::__construct('The provided two-factor authentication token was not valid.'); diff --git a/app/Filament/Resources/ServerResource/Pages/CreateServer.php b/app/Filament/Resources/ServerResource/Pages/CreateServer.php index 7973349eb..1abae3d30 100644 --- a/app/Filament/Resources/ServerResource/Pages/CreateServer.php +++ b/app/Filament/Resources/ServerResource/Pages/CreateServer.php @@ -371,19 +371,20 @@ class CreateServer extends CreateRecord $text = Forms\Components\TextInput::make('variable_value') ->hidden($this->shouldHideComponent(...)) ->maxLength(191) - ->rules([ + ->required(fn (Forms\Get $get) => in_array('required', explode('|', $get('rules')))) + ->rules( fn (Forms\Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { $validator = Validator::make(['validatorkey' => $value], [ 'validatorkey' => $get('rules'), ]); if ($validator->fails()) { - $message = str($validator->errors()->first())->replace('validatorkey', $get('name')); + $message = str($validator->errors()->first())->replace('validatorkey', $get('name'))->toString(); $fail($message); } }, - ]); + ); $select = Forms\Components\Select::make('variable_value') ->hidden($this->shouldHideComponent(...)) diff --git a/app/Filament/Resources/UserResource/Pages/EditUser.php b/app/Filament/Resources/UserResource/Pages/EditUser.php index e12e4de40..4750ce28f 100644 --- a/app/Filament/Resources/UserResource/Pages/EditUser.php +++ b/app/Filament/Resources/UserResource/Pages/EditUser.php @@ -3,6 +3,7 @@ namespace App\Filament\Resources\UserResource\Pages; use App\Filament\Resources\UserResource; +use App\Services\Exceptions\FilamentExceptionHandler; use Filament\Actions; use Filament\Resources\Pages\EditRecord; use App\Models\User; @@ -77,4 +78,9 @@ class EditUser extends EditRecord { return []; } + + public function exception($exception, $stopPropagation): void + { + (new FilamentExceptionHandler())->handle($exception, $stopPropagation); + } } diff --git a/app/Services/Exceptions/FilamentExceptionHandler.php b/app/Services/Exceptions/FilamentExceptionHandler.php new file mode 100644 index 000000000..328e944b0 --- /dev/null +++ b/app/Services/Exceptions/FilamentExceptionHandler.php @@ -0,0 +1,24 @@ +title($exception->title ?? null) + ->body($exception->body ?? $exception->getMessage()) + ->color($exception->color ?? 'danger') + ->icon($exception->icon ?? 'tabler-x') + ->danger() + ->send(); + + if ($this->stopPropagation ?? true) { + $stopPropagation(); + } + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index fa0504e38..18295a393 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -9,10 +9,7 @@ return Application::configure(basePath: dirname(__DIR__)) \Prologue\Alerts\AlertsServiceProvider::class, ]) ->withRouting( - web: __DIR__.'/../routes/web.php', - // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', - // channels: __DIR__.'/../routes/channels.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) {