fix(permissions): 개인 권한 테이블 불일치 수정
tkuser는 user_page_permissions에 저장하지만 네비/대시보드는 user_page_access에서 읽던 문제. user_page_permissions 기반으로 통일. - pageAccessRoutes.js: user_page_access → user_page_permissions JOIN - dashboardModel.js: 개인 권한 쿼리 page_name 기반으로 변경 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -101,13 +101,17 @@ const DashboardModel = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 개인 권한 페이지 (page_id = pages.id)
|
// 개인 권한 페이지 (user_page_permissions.page_name 기반)
|
||||||
const [personalRows] = await db.execute(`
|
const [personalRows] = await db.execute(`
|
||||||
SELECT upa.page_id
|
SELECT upp.page_name
|
||||||
FROM user_page_access upa
|
FROM user_page_permissions upp
|
||||||
WHERE upa.user_id = ? AND upa.can_access = 1
|
WHERE upp.user_id = ? AND upp.can_access = 1
|
||||||
`, [userId]);
|
`, [userId]);
|
||||||
const personalPageIds = new Set(personalRows.map(r => r.page_id));
|
const personalPageKeys = new Set();
|
||||||
|
personalRows.forEach(r => {
|
||||||
|
const key = r.page_name.startsWith('s1.') ? r.page_name.slice(3) : r.page_name;
|
||||||
|
personalPageKeys.add(key);
|
||||||
|
});
|
||||||
|
|
||||||
// 분류 (부서 우선, 중복 없음 — 권한 있는 페이지만)
|
// 분류 (부서 우선, 중복 없음 — 권한 있는 페이지만)
|
||||||
const departmentPages = [];
|
const departmentPages = [];
|
||||||
@@ -116,7 +120,7 @@ const DashboardModel = {
|
|||||||
for (const page of allPages) {
|
for (const page of allPages) {
|
||||||
if (deptPageKeys.has(page.page_key)) {
|
if (deptPageKeys.has(page.page_key)) {
|
||||||
departmentPages.push(formatPage(page));
|
departmentPages.push(formatPage(page));
|
||||||
} else if (personalPageIds.has(page.id)) {
|
} else if (personalPageKeys.has(page.page_key)) {
|
||||||
personalPages.push(formatPage(page));
|
personalPages.push(formatPage(page));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,10 +84,12 @@ router.get('/users/:userId/page-access', requireAuth, async (req, res) => {
|
|||||||
p.page_name,
|
p.page_name,
|
||||||
p.page_path,
|
p.page_path,
|
||||||
p.category,
|
p.category,
|
||||||
COALESCE(upa.can_access, dpp.can_access, p.is_default_accessible, 0) as can_access,
|
COALESCE(upp.can_access, dpp.can_access, p.is_default_accessible, 0) as can_access,
|
||||||
upa.granted_at
|
upp.granted_at
|
||||||
FROM pages p
|
FROM pages p
|
||||||
LEFT JOIN user_page_access upa ON p.id = upa.page_id AND upa.user_id = ?
|
LEFT JOIN user_page_permissions upp
|
||||||
|
ON upp.user_id = ?
|
||||||
|
AND (upp.page_name = CONCAT('s1.', p.page_key) OR upp.page_name = p.page_key)
|
||||||
LEFT JOIN department_page_permissions dpp
|
LEFT JOIN department_page_permissions dpp
|
||||||
ON dpp.department_id = ?
|
ON dpp.department_id = ?
|
||||||
AND (dpp.page_name = CONCAT('s1.', p.page_key) OR dpp.page_name = p.page_key)
|
AND (dpp.page_name = CONCAT('s1.', p.page_key) OR dpp.page_name = p.page_key)
|
||||||
|
|||||||
Reference in New Issue
Block a user