diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index a944e97e2..2d875fd02 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -39,10 +39,7 @@ public function register(): void public function boot(): void { $this->defineCustomIfStatements(); - - RateLimiter::for('api', function (Request $request) { - return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); - }); + $this->setApiRateLimit(); if (config('app.force_https')) { URL::forceScheme('https'); @@ -77,4 +74,11 @@ protected function defineCustomIfStatements(): void return filled($value); }); } + + protected function setApiRateLimit(): void + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(config('api.rate_limit')); + }); + } } diff --git a/config/api.php b/config/api.php new file mode 100644 index 000000000..d0b0f661b --- /dev/null +++ b/config/api.php @@ -0,0 +1,7 @@ + env('API_RATE_LIMIT', 60), + +]; diff --git a/routes/api.php b/routes/api.php index 04d0d04dc..527b71a69 100644 --- a/routes/api.php +++ b/routes/api.php @@ -24,6 +24,6 @@ Route::get('/speedtest/latest', GetLatestController::class) ->name('speedtest.latest'); -Route::middleware('auth:sanctum')->group(function () { +Route::middleware(['auth:sanctum', 'throttle:api'])->group(function () { require __DIR__.'/api/v1/routes.php'; });