기존 SQL 은 $isAdmin=true 면 모든 메뉴 통과 → 권한 매핑이 의미 없었음. 사용자 요청: "로그인한 사용자 권한 그룹에 따른 메뉴가 동적으로 나오도록" - /api/menu: isAdmin 분기 제거, authority_sub_user JOIN authority_sub_menu 매핑만 사용. 자식이 권한에 있으면 부모도 자동 노출(트리 유지) 로직은 유지 - 운영 DB: 관리자그룹에 active 메뉴 36개 일괄 매핑 (재고 이력 9000304 포함). 사용자 관리 화면에서 권한 그룹 멤버 / 메뉴 매핑을 직접 조정해 사용자별 사이드바를 동적으로 제어 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,9 +11,9 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
const body = await request.json();
|
||||
const menuObjId = body.MENUOBJID || "";
|
||||
const isAdmin = !!user.isAdmin;
|
||||
|
||||
// super admin = 모든 메뉴, 일반 사용자 = 권한 그룹 매핑된 메뉴만 (자식이 있으면 부모도 자동 노출)
|
||||
// 로그인한 사용자의 권한 그룹에 매핑된 메뉴만 노출 (자식이 권한에 있으면 부모 자동 표시).
|
||||
// isAdmin 같은 백도어는 두지 않음 — 모든 사용자는 권한 그룹 매핑대로 동적으로 메뉴를 받는다.
|
||||
const rows = await queryRows(
|
||||
`SELECT MI.OBJID::text AS "objid",
|
||||
MI.MENU_NAME_KOR AS "menuNameKor",
|
||||
@@ -27,12 +27,11 @@ export async function POST(request: NextRequest) {
|
||||
AND (MI.PARENT_OBJ_ID = $1::numeric
|
||||
OR MI.PARENT_OBJ_ID IN (SELECT OBJID FROM MENU_INFO WHERE PARENT_OBJ_ID = $1::numeric AND COALESCE(STATUS, '') = 'active'))
|
||||
AND (
|
||||
$2::boolean = true
|
||||
OR MI.OBJID IN (
|
||||
MI.OBJID IN (
|
||||
SELECT ASM.menu_objid
|
||||
FROM authority_sub_user ASU
|
||||
JOIN authority_sub_menu ASM ON ASM.master_objid = ASU.master_objid
|
||||
WHERE ASU.user_id = $3::text
|
||||
WHERE ASU.user_id = $2::text
|
||||
)
|
||||
OR EXISTS (
|
||||
SELECT 1 FROM menu_info CH
|
||||
@@ -41,12 +40,12 @@ export async function POST(request: NextRequest) {
|
||||
SELECT ASM.menu_objid
|
||||
FROM authority_sub_user ASU
|
||||
JOIN authority_sub_menu ASM ON ASM.master_objid = ASU.master_objid
|
||||
WHERE ASU.user_id = $3::text
|
||||
WHERE ASU.user_id = $2::text
|
||||
)
|
||||
)
|
||||
)
|
||||
ORDER BY MI.SEQ`,
|
||||
[menuObjId, isAdmin, user.userId]
|
||||
[menuObjId, user.userId]
|
||||
);
|
||||
|
||||
return NextResponse.json({ RESULT: rows });
|
||||
|
||||
Reference in New Issue
Block a user