From 804ff64a71d15fb6b9188355bed1ef5b354edc7f Mon Sep 17 00:00:00 2001 From: Lance Pioch Date: Fri, 18 Oct 2024 22:27:18 -0400 Subject: [PATCH] Force register the validation rule --- app/Providers/AppServiceProvider.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 4b5d75710..e3ceea882 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -8,6 +8,7 @@ use App\Models; use App\Models\ApiKey; use App\Models\Node; use App\Models\User; +use App\Rules\Port; use Dedoc\Scramble\Scramble; use Dedoc\Scramble\Support\Generator\OpenApi; use Dedoc\Scramble\Support\Generator\SecurityScheme; @@ -20,9 +21,11 @@ use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\URL; +use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; +use Illuminate\Validation\InvokableValidationRule; use Laravel\Sanctum\Sanctum; use Livewire\Livewire; @@ -76,6 +79,20 @@ class AppServiceProvider extends ServiceProvider Livewire::propertySynthesizer(EndpointSynth::class); + // Assign custom validation rules + Validator::extend('port', function ($attribute, $value, $parameters, $validator) { + $rule = InvokableValidationRule::make(new Port(...$parameters)); + $rule->setValidator($validator); + $rule->setData($validator->getData()); + + $result = $rule->passes($attribute, $value); + if (!$result) { + $validator->customMessages[$attribute] = $rule->message(); + } + + return $result; + }); + $bearerTokens = fn (OpenApi $openApi) => $openApi->secure(SecurityScheme::http('bearer')); Gate::define('viewApiDocs', fn () => true); Scramble::registerApi('application', ['api_path' => 'api/application', 'info' => ['version' => '1.0']]);