diff --git a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php index fd281793c..95c29b3db 100644 --- a/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php +++ b/app/Filament/Resources/DatabaseHostResource/Pages/CreateDatabaseHost.php @@ -4,8 +4,6 @@ namespace App\Filament\Resources\DatabaseHostResource\Pages; use App\Filament\Resources\DatabaseHostResource; use App\Services\Databases\Hosts\HostCreationService; -use Closure; -use Exception; use Filament\Forms; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; @@ -13,6 +11,7 @@ use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Notifications\Notification; use Filament\Resources\Pages\CreateRecord; +use Filament\Support\Exceptions\Halt; use Illuminate\Database\Eloquent\Model; use PDOException; @@ -104,21 +103,18 @@ class CreateDatabaseHost extends CreateRecord protected function handleRecordCreation(array $data): Model { - return $this->service->handle($data); - } - - public function exception(Exception $e, Closure $stopPropagation): void - { - if ($e instanceof PDOException) { + try { + return $this->service->handle($data); + } catch (PDOException $exception) { Notification::make() ->title('Error connecting to database host') - ->body($e->getMessage()) + ->body($exception->getMessage()) ->color('danger') ->icon('tabler-database') ->danger() ->send(); - $stopPropagation(); + throw new Halt(); } } } diff --git a/app/Filament/Resources/DatabaseHostResource/Pages/EditDatabaseHost.php b/app/Filament/Resources/DatabaseHostResource/Pages/EditDatabaseHost.php index 2ff8fd040..462e44570 100644 --- a/app/Filament/Resources/DatabaseHostResource/Pages/EditDatabaseHost.php +++ b/app/Filament/Resources/DatabaseHostResource/Pages/EditDatabaseHost.php @@ -6,8 +6,6 @@ use App\Filament\Resources\DatabaseHostResource; use App\Filament\Resources\DatabaseHostResource\RelationManagers\DatabasesRelationManager; use App\Models\DatabaseHost; use App\Services\Databases\Hosts\HostUpdateService; -use Closure; -use Exception; use Filament\Actions; use Filament\Forms; use Filament\Forms\Components\Section; @@ -16,6 +14,7 @@ use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; +use Filament\Support\Exceptions\Halt; use Illuminate\Database\Eloquent\Model; use PDOException; @@ -117,21 +116,18 @@ class EditDatabaseHost extends EditRecord return $record; } - return $this->hostUpdateService->handle($record, $data); - } - - public function exception(Exception $e, Closure $stopPropagation): void - { - if ($e instanceof PDOException) { + try { + return $this->hostUpdateService->handle($record, $data); + } catch (PDOException $exception) { Notification::make() ->title('Error connecting to database host') - ->body($e->getMessage()) + ->body($exception->getMessage()) ->color('danger') ->icon('tabler-database') ->danger() ->send(); - $stopPropagation(); + throw new Halt(); } } } diff --git a/app/Filament/Resources/UserResource/Pages/EditProfile.php b/app/Filament/Resources/UserResource/Pages/EditProfile.php index 987b4a9fa..2752d97af 100644 --- a/app/Filament/Resources/UserResource/Pages/EditProfile.php +++ b/app/Filament/Resources/UserResource/Pages/EditProfile.php @@ -14,9 +14,7 @@ use chillerlan\QRCode\Common\EccLevel; use chillerlan\QRCode\Common\Version; use chillerlan\QRCode\QRCode; use chillerlan\QRCode\QROptions; -use Closure; use DateTimeZone; -use Exception; use Filament\Forms\Components\Actions; use Filament\Forms\Components\Actions\Action; use Filament\Forms\Components\Grid; @@ -32,6 +30,7 @@ use Filament\Forms\Components\TextInput; use Filament\Forms\Get; use Filament\Notifications\Notification; use Filament\Support\Enums\MaxWidth; +use Filament\Support\Exceptions\Halt; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Hash; @@ -352,7 +351,19 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile } if ($token = $data['2fa-disable-code'] ?? null) { - $this->toggleTwoFactorService->handle($record, $token, false); + try { + $this->toggleTwoFactorService->handle($record, $token, false); + } catch (TwoFactorAuthenticationTokenInvalid $exception) { + Notification::make() + ->title('Invalid 2FA Code') + ->body($exception->getMessage()) + ->color('danger') + ->icon('tabler-2fa') + ->danger() + ->send(); + + throw new Halt(); + } cache()->forget("users.$record->id.2fa.state"); } @@ -360,21 +371,6 @@ class EditProfile extends \Filament\Pages\Auth\EditProfile return parent::handleRecordUpdate($record, $data); } - public function exception(Exception $e, Closure $stopPropagation): void - { - if ($e instanceof TwoFactorAuthenticationTokenInvalid) { - Notification::make() - ->title('Invalid 2FA Code') - ->body($e->getMessage()) - ->color('danger') - ->icon('tabler-2fa') - ->danger() - ->send(); - - $stopPropagation(); - } - } - protected function getFormActions(): array { return [];