fix(role): getRoleNonMemberList OGNL test 의 inner-quote 컨벤션 위반 수정

증상: 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) <noreply@anthropic.com>
This commit is contained in:
hjjeong
2026-04-30 07:06:19 +09:00
parent 42f7ae35db
commit b5a60d1c8b
@@ -126,7 +126,7 @@
WHERE UI.USER_ID NOT IN (
SELECT USER_ID FROM AUTHORITY_SUB_USER WHERE MASTER_OBJID = #{master_objid}
)
<if test="company_code != null and company_code != '' and company_code != '*'">
<if test='company_code != null and company_code != "" and company_code != "*"'>
AND (UI.COMPANY_CODE = #{company_code} OR UI.COMPANY_CODE = '*')
</if>
<if test="status_active != null and status_active == true">