by($request->user()?->id !== null ?: $request->ip()); // }); $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(800)->by($request->user()?->id ?: $request->ip()); }); } else { RateLimiter::for('api', function () { return Limit::none(); }); } $this->routes(function () { Route::middleware('api') ->prefix('api') ->group(base_path('routes/api.php')); Route::middleware('web') ->group(base_path('routes/web.php')); }); Route::macro('apiAddendumResource', function ($addendum, $uri, $controller) { $singularUri = Str::singular($uri); $signularAddendum = Str::singular((strtolower($addendum))); $pluralAddendum = Str::plural($signularAddendum); Route::get("{$uri}/{{$singularUri}}/{$pluralAddendum}", [$controller, "{$signularAddendum}Index"]) ->name("{$singularUri}.{$signularAddendum}.index"); Route::post("{$uri}/{{$singularUri}}/{$pluralAddendum}", [$controller, "{$signularAddendum}Store"]) ->name("{$singularUri}.{$signularAddendum}.store"); Route::match( ['put', 'patch'], "{$uri}/{{$singularUri}}/{$pluralAddendum}", [$controller, "{$signularAddendum}Update"] ) ->name("{$singularUri}.{$signularAddendum}.update"); Route::delete( "{$uri}/{{$singularUri}}/{$pluralAddendum}/{medium}", [$controller,"{$signularAddendum}Delete"] ) ->name("{$singularUri}.{$signularAddendum}.destroy"); }); } }