12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- declare(strict_types=1);
- namespace App\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;
- use Str;
- class RouteServiceProvider extends ServiceProvider
- {
- /**
- * The path to the "home" route for your application.
- *
- * Typically, users are redirected here after authentication.
- *
- * @var string
- */
- public const HOME = '/home';
- /**
- * Define your route model bindings, pattern filters, etc.
- *
- * @return void
- */
- public function boot()
- {
- $this->configureRateLimiting();
- $this->routes(function () {
- Route::middleware('api')
- ->prefix('api')
- ->namespace($this->namespace)
- ->group(base_path('routes/api.php'));
- Route::middleware('web')
- ->namespace($this->namespace)
- ->group(base_path('routes/web.php'));
- Route::middleware('web')
- ->group(base_path('routes/redirect.php'));
- });
- // This will remove the index.php from the URL and prevent canonical conflicts.
- if (Str::contains(request()->getRequestUri(), '/index.php/')) {
- $url = str_replace('index.php/', '', request()->getRequestUri());
- if ($url !== '') {
- header("Location: $url", true, 301);
- exit;
- }
- }
- // The `id` must be an integer
- Route::pattern('id', '[0-9]+');
- }
- /**
- * Configure the rate limiters for the application.
- *
- * @return void
- */
- protected function configureRateLimiting()
- {
- RateLimiter::for('api', function (Request $request) {
- return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
- });
- }
- }
|