diff --git a/app/Http/Controllers/Fo/ProductController.php b/app/Http/Controllers/Fo/ProductController.php index ce9e867..ef55a32 100644 --- a/app/Http/Controllers/Fo/ProductController.php +++ b/app/Http/Controllers/Fo/ProductController.php @@ -46,6 +46,10 @@ class ProductController extends Controller */ public function productsFiltered(): \Illuminate\Http\JsonResponse { + if (!request()->has('range_id') or !request()->has('page')) { + abort(404); + } + $productModels = Product::query() ->where('published', true) ->where('range_id', request()->range_id) diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 15a9786..09fd3fe 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -66,5 +66,6 @@ class Kernel extends HttpKernel 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'htmlsanitize' => \App\Http\Middleware\HtmlSanitizer::class, 'crm_questions' => \App\Http\Middleware\CrmMiddlewareQuestions::class, + 'json_only' => \App\Http\Middleware\JsonOnly::class, ]; } diff --git a/app/Http/Middleware/JsonOnly.php b/app/Http/Middleware/JsonOnly.php new file mode 100644 index 0000000..dbc6ac2 --- /dev/null +++ b/app/Http/Middleware/JsonOnly.php @@ -0,0 +1,26 @@ +isJson() or $request->expectsJson())) + ) { + abort(400, 'Invalid JSON'); + } + + return $next($request); + } +} diff --git a/routes/web-fo.php b/routes/web-fo.php index 6b8dcfe..388bbb2 100644 --- a/routes/web-fo.php +++ b/routes/web-fo.php @@ -66,7 +66,11 @@ Route::middleware(['throttle:credentials'])->name('fo.')->group(function () { Route::get('/gamme/{slug}', [RangeController::class, 'show'])->name('ranges.show'); // * PRODUCTS - Route::get('/produit/filtered', [ProductController::class, 'productsFiltered'])->name('products.filtered'); + Route::middleware('json_only')->get( + '/produit/filtered', + [ProductController::class, 'productsFiltered'] + )->name('products.filtered'); + Route::get('/produit/{slug}', [ProductController::class, 'show'])->name('products.show'); // * COMMITMENTS