configureRateLimiting(); $this->routes(function () { Route::middleware('api') ->prefix('api/v1') ->group(base_path('routes/api-v1.php')); Route::middleware('web') ->group(base_path('routes/web.php')); }); } /** * Configure the rate limiters for the application. */ protected function configureRateLimiting(): void { RateLimiter::for('api', function (Request $request) { return Limit::perMinute(60)->by($request->user()?->id ?: $request->getClientIp()); }); RateLimiter::for('login', function (Request $request) { return [ Limit::perHour(config('rate_limiting.login_max_request', 50))->by($request->getClientIp()), Limit::perHour(config('rate_limiting.login_max_email_request', 10))->by($request->getClientIp() . '-' . $request->input('email')), ]; }); RateLimiter::for('captcha-checking', function (Request $request) { return [ Limit::perMinute(config('captcha.validate_max_count_errors', 5))->by($request->getClientIp() . '-' . $request->input('captcha_key', 'key')), ]; }); RateLimiter::for('captcha-verification-information', function (Request $request) { return [ Limit::perMinute(config('captcha.max_info_display_count', 5))->by($request->getClientIp() . '-' . $request->route('captcha_uuid', 'uuid')), ]; }); } }