From 64c11d548cb2aac17a293fe3046569ebb4c120e3 Mon Sep 17 00:00:00 2001 From: dohyeons Date: Mon, 1 Dec 2025 10:44:56 +0900 Subject: [PATCH] =?UTF-8?q?=EB=94=94=EC=A7=80=ED=84=B8=20=ED=8A=B8?= =?UTF-8?q?=EC=9C=88=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=8B=9C=20=EC=B5=9C=EA=B3=A0=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=9E=90=20=EA=B6=8C=ED=95=9C=20=EC=B2=98=EB=A6=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../digitalTwinLayoutController.ts | 41 ++++++++++++++----- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/backend-node/src/controllers/digitalTwinLayoutController.ts b/backend-node/src/controllers/digitalTwinLayoutController.ts index d7ecbae1..f95ed0e2 100644 --- a/backend-node/src/controllers/digitalTwinLayoutController.ts +++ b/backend-node/src/controllers/digitalTwinLayoutController.ts @@ -22,11 +22,19 @@ export const getLayouts = async ( LEFT JOIN user_info u1 ON l.created_by = u1.user_id LEFT JOIN user_info u2 ON l.updated_by = u2.user_id LEFT JOIN digital_twin_objects o ON l.id = o.layout_id - WHERE l.company_code = $1 `; - const params: any[] = [companyCode]; - let paramIndex = 2; + const params: any[] = []; + let paramIndex = 1; + + // 최고 관리자는 모든 레이아웃 조회 가능 + if (companyCode && companyCode !== '*') { + query += ` WHERE l.company_code = $${paramIndex}`; + params.push(companyCode); + paramIndex++; + } else { + query += ` WHERE 1=1`; + } if (externalDbConnectionId) { query += ` AND l.external_db_connection_id = $${paramIndex}`; @@ -75,14 +83,27 @@ export const getLayoutById = async ( const companyCode = req.user?.companyCode; const { id } = req.params; - // 레이아웃 기본 정보 - const layoutQuery = ` - SELECT l.* - FROM digital_twin_layout l - WHERE l.id = $1 AND l.company_code = $2 - `; + // 레이아웃 기본 정보 - 최고 관리자는 모든 레이아웃 조회 가능 + let layoutQuery: string; + let layoutParams: any[]; - const layoutResult = await pool.query(layoutQuery, [id, companyCode]); + if (companyCode && companyCode !== '*') { + layoutQuery = ` + SELECT l.* + FROM digital_twin_layout l + WHERE l.id = $1 AND l.company_code = $2 + `; + layoutParams = [id, companyCode]; + } else { + layoutQuery = ` + SELECT l.* + FROM digital_twin_layout l + WHERE l.id = $1 + `; + layoutParams = [id]; + } + + const layoutResult = await pool.query(layoutQuery, layoutParams); if (layoutResult.rowCount === 0) { return res.status(404).json({