2026-02-06 11:56:29 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Modules\Integration;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
|
|
|
use Illuminate\Support\Facades\Route;
|
2026-02-23 10:10:03 +08:00
|
|
|
use Illuminate\Support\Facades\RateLimiter;
|
|
|
|
|
use Illuminate\Cache\RateLimiting\Limit;
|
|
|
|
|
use Illuminate\Http\Request;
|
2026-02-06 11:56:29 +08:00
|
|
|
use App\Modules\Integration\Middleware\TenantIdentificationMiddleware;
|
|
|
|
|
|
|
|
|
|
class IntegrationServiceProvider extends ServiceProvider
|
|
|
|
|
{
|
|
|
|
|
public function boot()
|
|
|
|
|
{
|
|
|
|
|
$this->loadRoutesFrom(__DIR__ . '/Routes/api.php');
|
|
|
|
|
$this->loadMigrationsFrom(__DIR__ . '/Database/Migrations');
|
|
|
|
|
|
2026-02-23 10:10:03 +08:00
|
|
|
// 註冊 Middleware 別名
|
2026-02-06 11:56:29 +08:00
|
|
|
Route::aliasMiddleware('integration.tenant', TenantIdentificationMiddleware::class);
|
2026-02-23 10:10:03 +08:00
|
|
|
|
|
|
|
|
// 定義 Integration API 速率限制(每分鐘 60 次,依 Token 使用者識別)
|
|
|
|
|
RateLimiter::for('integration', function (Request $request) {
|
|
|
|
|
return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
|
|
|
|
|
});
|
2026-02-06 11:56:29 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function register()
|
|
|
|
|
{
|
|
|
|
|
//
|
|
|
|
|
}
|
|
|
|
|
}
|