You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.6 KiB
94 lines
2.6 KiB
<?php |
|
|
|
namespace App\Providers; |
|
|
|
use File; |
|
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. |
|
* |
|
* Typically, users are redirected here after authentication. |
|
* |
|
* @var string |
|
*/ |
|
protected $namespace = 'App\Http\Controllers'; |
|
|
|
/** |
|
* Define your route model bindings, pattern filters, and other route configuration. |
|
*/ |
|
public function boot(): void |
|
{ |
|
// $this->configureRateLimiting(); |
|
|
|
// $this->routes(function () { |
|
// Route::middleware('api') |
|
// ->prefix('api') |
|
// ->group(base_path('routes/api.php')); |
|
|
|
// Route::middleware('web') |
|
// ->group(base_path('routes/web.php')); |
|
// }); |
|
|
|
parent::boot(); |
|
} |
|
|
|
public function map() |
|
{ |
|
$this->mapApiRoutes(); |
|
$this->mapWebRoutes(); |
|
$this->mapRoutesByDirectory(); |
|
$this->mapRoutesApiByDirectory(); |
|
} |
|
|
|
/** |
|
* 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->ip()); |
|
}); |
|
} |
|
|
|
protected function mapWebRoutes() |
|
{ |
|
Route::middleware('web') |
|
->namespace($this->namespace) |
|
->group(base_path('routes/web.php')); |
|
} |
|
|
|
protected function mapApiRoutes() |
|
{ |
|
Route::prefix('api') |
|
->middleware('api') |
|
->namespace($this->namespace) |
|
->group(base_path('routes/api.php')); |
|
} |
|
|
|
protected function mapRoutesByDirectory() |
|
{ |
|
Route::group(['namespace' => $this->namespace, 'middleware'=>'web'], function ($router) { |
|
foreach(File::allFiles(base_path().'/routes/web') as $route) { |
|
if(preg_match("/^.*Route.php$/", $route->getPathname())) |
|
require $route->getPathname(); |
|
} |
|
}); |
|
} |
|
|
|
protected function mapRoutesApiByDirectory() |
|
{ |
|
Route::group(['prefix' => 'api', 'middleware'=>'web'], function ($router) { |
|
foreach(File::allFiles(base_path().'/routes/api') as $route) { |
|
if(preg_match("/^.*Api.php$/", $route->getPathname())) |
|
require $route->getPathname(); |
|
} |
|
}); |
|
} |
|
}
|
|
|