From 35ca0d90f799379beff3bb8e205211a1e61b6a6c Mon Sep 17 00:00:00 2001 From: James Collins Date: Thu, 6 Apr 2023 17:28:07 +1000 Subject: [PATCH] added the route macro apiAttachmentResource --- app/Providers/RouteServiceProvider.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index a23540f..4ddad02 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -7,6 +7,7 @@ use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvi use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Support\Facades\Route; +use Illuminate\Support\Str; class RouteServiceProvider extends ServiceProvider { @@ -37,6 +38,22 @@ class RouteServiceProvider extends ServiceProvider Route::middleware('web') ->group(base_path('routes/web.php')); }); + + Route::macro('apiAttachmentResource', function ($uri, $controller) { + $singularUri = Str::singular($uri); + + Route::get("$uri/{$singularUri}/attachments", [$controller, 'getAttachments']) + ->name("$singularUri.attachments.index"); + + Route::post("$uri/{$singularUri}/attachments", [$controller, 'storeAttachment']) + ->name("$singularUri.attachments.store"); + + Route::match(['put', 'patch'], "$uri/{$singularUri}/attachments", [$controller, 'updateAttachments']) + ->name("$singularUri.attachments.update"); + + Route::delete("$uri/{$singularUri}/attachments/{medium}", [$controller, 'deleteAttachment']) + ->name("$singularUri.attachments.destroy"); + }); } /** @@ -52,14 +69,14 @@ class RouteServiceProvider extends ServiceProvider $rateLimitEnabled = true; $user = auth()->user(); - + if (app()->environment('testing')) { $rateLimitEnabled = false; } elseif ($user !== null && $user->hasPermission('admin/ratelimit') === true) { // Admin users with the "admin/ratelimit" permission are not rate limited $rateLimitEnabled = false; } - + if ($rateLimitEnabled === true) { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(180)->by($request->user()?->id ?: $request->ip());