From 3280be8bd482a0e14c1e27e1bad531f1786b2919 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Thu, 7 May 2026 16:51:16 +0900 Subject: [PATCH] =?UTF-8?q?fix(rolesList):=20cross-tenant=20row=20?= =?UTF-8?q?=EC=8B=9D=EB=B3=84=20+=20=EB=A9=94=EB=89=B4=20=ED=8A=B8?= =?UTF-8?q?=EB=A6=AC=20=EC=8A=A4=ED=81=AC=EB=A1=A4=20=EB=B3=B4=EA=B0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cross-tenant fan-out 결과에서 회사 A·B 의 동일 objid 가 합본에 들어와 React key 중복 경고 발생 + isSelected 가 회사 구분 못 하던 문제. - li key: role.objid → \`\${company_code}-\${objid}\` 조합으로 unique - isSelected 비교: objid + company_code 둘 다 매칭 - selectedRole 유효성 체크(useEffect)에도 company_code 매칭 추가 추가: - 메뉴 전체 트리구조에 자체 스크롤 (maxHeight: calc(100vh - 32rem)) - thead sticky top-0 + bg-muted (투명도 제거) → 스크롤 시 헤더 가려짐 해소 SUPER_ADMIN cross-tenant 정책 변경 없음 (모든 회사 합본 표시 유지), React 식별만 정확해지는 fix. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../app/(main)/admin/userMng/rolesList/page.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/frontend/app/(main)/admin/userMng/rolesList/page.tsx b/frontend/app/(main)/admin/userMng/rolesList/page.tsx index 74c29633..07748cda 100644 --- a/frontend/app/(main)/admin/userMng/rolesList/page.tsx +++ b/frontend/app/(main)/admin/userMng/rolesList/page.tsx @@ -180,7 +180,11 @@ export default function RolesPage() { // 선택 유효성 useEffect(() => { if (!selectedRole) return; - if (!roleGroups.find((r) => r.objid === selectedRole.objid)) { + if ( + !roleGroups.find( + (r) => r.objid === selectedRole.objid && r.company_code === selectedRole.company_code, + ) + ) { setSelectedRole(null); } }, [roleGroups, selectedRole]); @@ -665,10 +669,12 @@ export default function RolesPage() { ) : (