diff --git a/app/Http/Middleware/ApiKeyMiddleware.php b/app/Http/Middleware/ApiKeyMiddleware.php index 2c3db683..38b304db 100644 --- a/app/Http/Middleware/ApiKeyMiddleware.php +++ b/app/Http/Middleware/ApiKeyMiddleware.php @@ -115,13 +115,19 @@ public function handle(Request $request, Closure $next) } } - // MNG 내부 통신: X-TENANT-ID 헤더로 테넌트 컨텍스트 재설정 - // mng_session 토큰(InternalTokenService 발급)인 경우에만 허용 + // MNG 내부 통신: X-TENANT-ID 헤더로 테넌트 컨텍스트 설정 $headerTenantId = $request->header('X-TENANT-ID'); - if ($headerTenantId && $accessToken && $accessToken->name === 'mng_session') { - $overrideTenantId = (int) $headerTenantId; - $request->attributes->set('tenant_id', $overrideTenantId); - app()->instance('tenant_id', $overrideTenantId); + if ($headerTenantId && $validApiKey) { + if ($accessToken && $accessToken->name === 'mng_session') { + // Bearer 토큰(mng_session)이 있으면 테넌트 컨텍스트 재설정 + $overrideTenantId = (int) $headerTenantId; + $request->attributes->set('tenant_id', $overrideTenantId); + app()->instance('tenant_id', $overrideTenantId); + } elseif (! app()->bound('tenant_id')) { + // Bearer 토큰 없이 API Key + X-TENANT-ID만 있으면 tenant 컨텍스트만 설정 + $request->attributes->set('tenant_id', (int) $headerTenantId); + app()->instance('tenant_id', (int) $headerTenantId); + } } // 화이트리스트(인증 예외 라우트) - Bearer 토큰 없이 접근 가능 @@ -142,6 +148,7 @@ public function handle(Request $request, Closure $next) 'api/v1/items/*/files', // 품목 파일 업로드/조회 'api/v1/files/*/view', // 파일 인라인 보기 (MNG 이미지 표시) 'api/v1/files/*/download', // 파일 다운로드 + 'api/v1/quotes/calculate/*', // 자동산출 (MNG에서 API Key + X-TENANT-ID로 접근) ]; // 현재 라우트 확인 (경로 또는 이름)