fix(dashboard): department_page_permissions 스키마 맞춤

page_id(없음) → page_name으로 조회, pages.page_key로 매칭.
실제 DB 구조와 shared/middleware/pagePermission.js 패턴 일치.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-03-30 14:10:30 +09:00
parent 0afe864ba3
commit 6b584f9881

View File

@@ -84,18 +84,18 @@ const DashboardModel = {
}; };
} }
// 부서 권한 페이지 // 부서 권한 페이지 (page_name = pages.page_key)
let deptPageIds = new Set(); let deptPageKeys = new Set();
if (departmentId) { if (departmentId) {
const [deptRows] = await db.execute(` const [deptRows] = await db.execute(`
SELECT dpp.page_id SELECT dpp.page_name
FROM department_page_permissions dpp FROM department_page_permissions dpp
WHERE dpp.department_id = ? AND dpp.can_access = 1 WHERE dpp.department_id = ? AND dpp.can_access = 1
`, [departmentId]); `, [departmentId]);
deptRows.forEach(r => deptPageIds.add(r.page_id)); deptRows.forEach(r => deptPageKeys.add(r.page_name));
} }
// 개인 권한 페이지 // 개인 권한 페이지 (page_id = pages.id)
const [personalRows] = await db.execute(` const [personalRows] = await db.execute(`
SELECT upa.page_id SELECT upa.page_id
FROM user_page_access upa FROM user_page_access upa
@@ -106,14 +106,14 @@ const DashboardModel = {
// 기본 접근 페이지 // 기본 접근 페이지
const defaultPages = allPages.filter(p => !p.is_admin_only); const defaultPages = allPages.filter(p => !p.is_admin_only);
// 분류 // 분류 (부서 우선, 중복 없음)
const departmentPages = []; const departmentPages = [];
const personalPages = []; const personalPages = [];
for (const page of allPages) { for (const page of allPages) {
if (page.is_admin_only) continue; if (page.is_admin_only) continue;
if (deptPageIds.has(page.id)) { if (deptPageKeys.has(page.page_key)) {
departmentPages.push(formatPage(page)); departmentPages.push(formatPage(page));
} else if (personalPageIds.has(page.id)) { } else if (personalPageIds.has(page.id)) {
personalPages.push(formatPage(page)); personalPages.push(formatPage(page));