namespace BookStack\Providers;
+use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
+ /**
+ * The path to the "home" route for your application.
+ *
+ * This is used by Laravel authentication to redirect users after login.
+ *
+ * @var string
+ */
+ public const HOME = '/';
+
/**
* This namespace is applied to the controller routes in your routes file.
*
*
* @var string
*/
- protected $namespace = 'BookStack\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*/
public function boot()
{
- parent::boot();
- }
+ $this->configureRateLimiting();
- /**
- * Define the routes for the application.
- *
- * @return void
- */
- public function map()
- {
- $this->mapWebRoutes();
- $this->mapApiRoutes();
+ $this->routes(function () {
+ $this->mapWebRoutes();
+ $this->mapApiRoutes();
+ });
}
/**
require base_path('routes/api.php');
});
}
+
+ /**
+ * Configure the rate limiters for the application.
+ *
+ * @return void
+ */
+ protected function configureRateLimiting()
+ {
+ RateLimiter::for('api', function (Request $request) {
+ return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
+ });
+ }
}