diff --git a/src/backend/src/main/java/com/zioinfo/kintex/auth/KintexPrincipal.java b/src/backend/src/main/java/com/zioinfo/kintex/auth/KintexPrincipal.java index 2828154..60ffe57 100644 --- a/src/backend/src/main/java/com/zioinfo/kintex/auth/KintexPrincipal.java +++ b/src/backend/src/main/java/com/zioinfo/kintex/auth/KintexPrincipal.java @@ -37,15 +37,20 @@ public record KintexPrincipal( this(userId, displayName, eventRoles, hallManager, null, DEFAULT_TENANT); } - /** 해당 행사에서 사용자의 역할(없으면 null). 홀매니저는 항상 HALL_MANAGER로 간주. */ + /** 전역 시스템관리자(app_user.role_code='ADMIN') 여부 — 전 행사 열람+승인(홀매니저 상위). */ + public boolean isAdmin() { + return "ADMIN".equalsIgnoreCase(roleCode); + } + + /** 해당 행사에서 사용자의 역할(없으면 null). 홀매니저·ADMIN은 항상 HALL_MANAGER로 간주. */ public EventRole roleFor(String eventId) { - if (hallManager) { + if (hallManager || isAdmin()) { return EventRole.HALL_MANAGER; } return eventRoles == null ? null : eventRoles.get(eventId); } public boolean hasAccess(String eventId) { - return hallManager || (eventRoles != null && eventRoles.containsKey(eventId)); + return hallManager || isAdmin() || (eventRoles != null && eventRoles.containsKey(eventId)); } }