diff --git a/.env.example b/.env.example index 44ee8787..28195caf 100644 --- a/.env.example +++ b/.env.example @@ -87,3 +87,7 @@ FORWARD_DB_PORT=54329 VITE_HOST_NAME=vite.solidtime.test VITE_APP_NAME="${APP_NAME}" #SAIL_XDEBUG_MODE=develop,debug,coverage + +# API rate limiting (requests per minute) +API_RATE_LIMIT_AUTH_PER_MINUTE=200 +API_RATE_LIMIT_GUEST_PER_MINUTE=60 diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index b14b30c0..71fd556e 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -33,8 +33,8 @@ class RouteServiceProvider extends ServiceProvider } return $request->user() - ? Limit::perMinute(200)->by($request->user()->id) - : Limit::perMinute(60)->by($request->ip()); + ? Limit::perMinute(config('services.api.authenticated'))->by($request->user()->id) + : Limit::perMinute(config('services.api.guest'))->by($request->ip()); }); $this->routes(function (): void { diff --git a/config/services.php b/config/services.php index 57c8cdb7..5663a84b 100644 --- a/config/services.php +++ b/config/services.php @@ -8,4 +8,8 @@ return [ 'basic_auth_username' => env('GOTENBERG_BASIC_AUTH_USERNAME'), 'basic_auth_password' => env('GOTENBERG_BASIC_AUTH_PASSWORD'), ], + 'api' => [ + 'authenticated' => (int) env('API_RATE_LIMIT_AUTH_PER_MINUTE', 200), + 'guest' => (int) env('API_RATE_LIMIT_GUEST_PER_MINUTE', 60), + ], ];