diff --git a/backend-node/src/services/adminService.ts b/backend-node/src/services/adminService.ts index ad1ee0d5..61785b3e 100644 --- a/backend-node/src/services/adminService.ts +++ b/backend-node/src/services/adminService.ts @@ -26,26 +26,26 @@ export class AdminService { let queryParams: any[] = [userLang]; let paramIndex = 2; + // SUPER_ADMIN과 COMPANY_ADMIN 구분 if (userType === "SUPER_ADMIN" && userCompanyCode === "*") { - // SUPER_ADMIN: 모든 메뉴 표시 - logger.info("✅ SUPER_ADMIN 모드: 모든 관리자 메뉴 표시"); - companyFilter = ""; - } else if (userType === "COMPANY_ADMIN") { - // COMPANY_ADMIN: 자기 회사 메뉴 + 공통 메뉴 - companyFilter = `AND (MENU.COMPANY_CODE = $${paramIndex} OR MENU.COMPANY_CODE IS NULL)`; - queryParams.push(userCompanyCode); - paramIndex++; - logger.info( - `✅ COMPANY_ADMIN 모드: 회사 ${userCompanyCode} 관리자 메뉴 + 공통 메뉴 표시` - ); + // SUPER_ADMIN + if (menuType === undefined) { + // 메뉴 관리 화면: 모든 메뉴 + logger.info("✅ 메뉴 관리 화면 (SUPER_ADMIN): 모든 메뉴 표시"); + companyFilter = ""; + } else { + // 좌측 사이드바: 공통 메뉴만 (company_code = '*') + logger.info("✅ 좌측 사이드바 (SUPER_ADMIN): 공통 메뉴만 표시"); + companyFilter = `AND MENU.COMPANY_CODE = '*'`; + } } else { - // 일반 사용자: 자기 회사 메뉴만 - companyFilter = `AND (MENU.COMPANY_CODE = $${paramIndex} OR MENU.COMPANY_CODE IS NULL)`; + // COMPANY_ADMIN: 좌측 사이드바, 메뉴 관리 화면 모두 자기 회사만 + logger.info( + `✅ ${menuType === undefined ? "메뉴 관리 화면" : "좌측 사이드바"} (COMPANY_ADMIN): 회사 ${userCompanyCode} 메뉴만 표시` + ); + companyFilter = `AND MENU.COMPANY_CODE = $${paramIndex}`; queryParams.push(userCompanyCode); paramIndex++; - logger.info( - `✅ 일반 사용자 모드: 회사 ${userCompanyCode} 관리자 메뉴 + 공통 메뉴 표시` - ); } // 기존 Java의 selectAdminMenuList 쿼리를 Raw Query로 포팅 @@ -256,33 +256,23 @@ export class AdminService { const { userId, userCompanyCode, userType, userLang = "ko" } = paramMap; - // SUPER_ADMIN (company_code='*'): 모든 메뉴 - // COMPANY_ADMIN: 자기 회사 메뉴 + 공통 메뉴 (company_code IS NULL) - // 일반 사용자: 권한이 있는 메뉴만 + // 좌측 사이드바: SUPER_ADMIN은 공통 메뉴, COMPANY_ADMIN은 자기 회사 메뉴 let companyFilter = ""; let queryParams: any[] = [userLang]; let paramIndex = 2; if (userType === "SUPER_ADMIN" && userCompanyCode === "*") { - // SUPER_ADMIN: 모든 메뉴 표시 - logger.info("✅ SUPER_ADMIN 모드: 모든 메뉴 표시"); - companyFilter = ""; - } else if (userType === "COMPANY_ADMIN") { - // COMPANY_ADMIN: 자기 회사 메뉴 + 공통 메뉴 - companyFilter = `AND (MENU.COMPANY_CODE = $${paramIndex} OR MENU.COMPANY_CODE IS NULL)`; - queryParams.push(userCompanyCode); - paramIndex++; - logger.info( - `✅ COMPANY_ADMIN 모드: 회사 ${userCompanyCode} 메뉴 + 공통 메뉴 표시` - ); + // SUPER_ADMIN: 공통 메뉴만 (company_code = '*') + logger.info("✅ 좌측 사이드바 (SUPER_ADMIN): 공통 메뉴만 표시"); + companyFilter = `AND MENU.COMPANY_CODE = '*'`; } else { - // 일반 사용자: 자기 회사 메뉴만 - companyFilter = `AND (MENU.COMPANY_CODE = $${paramIndex} OR MENU.COMPANY_CODE IS NULL)`; + // COMPANY_ADMIN: 자기 회사 메뉴만 + logger.info( + `✅ 좌측 사이드바 (COMPANY_ADMIN): 회사 ${userCompanyCode} 메뉴만 표시` + ); + companyFilter = `AND MENU.COMPANY_CODE = $${paramIndex}`; queryParams.push(userCompanyCode); paramIndex++; - logger.info( - `✅ 일반 사용자 모드: 회사 ${userCompanyCode} 메뉴 + 공통 메뉴 표시` - ); } // 기존 Java의 selectUserMenuList 쿼리를 Raw Query로 포팅 + 회사별 필터링