configureRateLimiting(); $this->routes(function () { Route::prefix('api/v1') ->middleware('api.v1') ->namespace($this->getApiNamespace('1')) ->group(base_path('routes/api/v1.php')); // Route::prefix('api/v2') // ->middleware('api.v2') // ->namespace($this->getApiNamespace(2)) // ->group(base_path('routes/api/v2.php')); Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); }); } /** * Build Api namespace based on provided version * * @return string The Api namespace */ private function getApiNamespace(string $version) { return 'App\Api\v' . $version . '\Controllers'; } /** * Configure the rate limiters for the application. * * @return void */ protected function configureRateLimiting() { RateLimiter::for('api', function (Request $request) { $maxAttempts = config('2fauth.api.throttle'); return is_null($maxAttempts) ? Limit::none() : Limit::perMinute($maxAttempts)->by($request->ip()); }); } }