From b5a60d1c8b07378a6dfea1dcff7b48fece38ddcb Mon Sep 17 00:00:00 2001 From: hjjeong Date: Thu, 30 Apr 2026 07:06:19 +0900 Subject: [PATCH] =?UTF-8?q?fix(role):=20getRoleNonMemberList=20OGNL=20test?= =?UTF-8?q?=20=EC=9D=98=20inner-quote=20=EC=BB=A8=EB=B2=A4=EC=85=98=20?= =?UTF-8?q?=EC=9C=84=EB=B0=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 증상: SUPER_ADMIN cross-tenant 모드에서 권한 그룹 클릭 시 workspace 500 — NumberFormatException: For input string: "TEST02" 원인: role.xml getRoleNonMemberList 의 if 가 test="company_code != null and company_code != '' and company_code != '*'" 형태로 single-quote 안에 single-quote 가 박혀, OGNL 이 '*' 를 number 로 변환 시도하다 NumberFormatException. 단일 모드 (test01.localhost) 에서는 group.company_code 가 시드 잔여 '*' 라 if 가 false 로 fall-through 해 안 터졌고, cross-tenant 에서 명시적 "TEST02" 가 들어가니 평가 시도 → 깨짐. CLAUDE.md "OGNL test: 바깥 작은따옴표" 컨벤션대로 수정: test='company_code != null and company_code != "" and company_code != "*"' 검증: TEST02 의 '관리자' 그룹 workspace 호출 → HTTP 200, members: 0, nonMembers: 2 (test02_admin, test02), menus: 0 정상 반환. 22, 334번 라인의 다른 if 문은 != '*' 가 없어 OGNL 평가가 numeric coercion 까지 안 가므로 무수정 (회귀 위험 0). Co-Authored-By: Claude Opus 4.7 (1M context) --- backend-spring/src/main/resources/mapper/role.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend-spring/src/main/resources/mapper/role.xml b/backend-spring/src/main/resources/mapper/role.xml index ae977344..b16495da 100644 --- a/backend-spring/src/main/resources/mapper/role.xml +++ b/backend-spring/src/main/resources/mapper/role.xml @@ -126,7 +126,7 @@ WHERE UI.USER_ID NOT IN ( SELECT USER_ID FROM AUTHORITY_SUB_USER WHERE MASTER_OBJID = #{master_objid} ) - + AND (UI.COMPANY_CODE = #{company_code} OR UI.COMPANY_CODE = '*')