fix: [middleware] 자동산출 API에 Bearer 없이 API Key + X-TENANT-ID 접근 허용
- quotes/calculate/* 를 allowWithoutAuth 화이트리스트에 추가 - X-TENANT-ID 헤더로 tenant 컨텍스트 설정 (Bearer 토큰 없어도 동작) - MNG 품목관리 수식 산출에서 HTTP 401 오류 해결
This commit is contained in:
@@ -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로 접근)
|
||||
];
|
||||
|
||||
// 현재 라우트 확인 (경로 또는 이름)
|
||||
|
||||
Reference in New Issue
Block a user