diff --git a/backend-node/src/middleware/superAdminMiddleware.ts b/backend-node/src/middleware/superAdminMiddleware.ts index d92139f5..67e99e37 100644 --- a/backend-node/src/middleware/superAdminMiddleware.ts +++ b/backend-node/src/middleware/superAdminMiddleware.ts @@ -15,6 +15,7 @@ export interface AuthenticatedRequest extends Request { userId: string; userName: string; companyCode: string; + userType?: string; userLang?: string; }; } @@ -47,8 +48,9 @@ export const requireSuperAdmin = ( return; } - // 슈퍼관리자 권한 확인 (회사코드가 '*'인 사용자) - if (req.user.companyCode !== "*") { + // 슈퍼관리자 권한 확인 (회사코드가 '*'이거나 userType이 'SUPER_ADMIN'인 사용자) + // 회사전환 후에도 SUPER_ADMIN은 관리 기능에 접근 가능해야 함 + if (req.user.companyCode !== "*" && req.user.userType !== "SUPER_ADMIN") { logger.warn("DDL 실행 시도 - 권한 부족", { userId: req.user.userId, companyCode: req.user.companyCode, @@ -167,7 +169,7 @@ export const validateDDLPermission = ( * 사용자가 슈퍼관리자인지 확인하는 유틸리티 함수 */ export const isSuperAdmin = (user: AuthenticatedRequest["user"]): boolean => { - return user?.companyCode === "*"; + return user?.companyCode === "*" || user?.userType === "SUPER_ADMIN"; }; /** diff --git a/backend-node/src/utils/permissionUtils.ts b/backend-node/src/utils/permissionUtils.ts index bbc85398..4bf6aa75 100644 --- a/backend-node/src/utils/permissionUtils.ts +++ b/backend-node/src/utils/permissionUtils.ts @@ -21,7 +21,8 @@ export enum PermissionLevel { */ export function isSuperAdmin(user?: PersonBean | null): boolean { if (!user) return false; - return user.companyCode === "*" && user.userType === "SUPER_ADMIN"; + // 회사전환 후에도 userType이 SUPER_ADMIN이면 최고관리자로 인정 + return user.userType === "SUPER_ADMIN"; } /**