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(`
|
||||
SELECT upa.page_id
|
||||
FROM user_page_access upa
|
||||
WHERE upa.user_id = ? AND upa.can_access = 1
|
||||
SELECT upp.page_name
|
||||
FROM user_page_permissions upp
|
||||
WHERE upp.user_id = ? AND upp.can_access = 1
|
||||
`, [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 = [];
|
||||
@@ -116,7 +120,7 @@ const DashboardModel = {
|
||||
for (const page of allPages) {
|
||||
if (deptPageKeys.has(page.page_key)) {
|
||||
departmentPages.push(formatPage(page));
|
||||
} else if (personalPageIds.has(page.id)) {
|
||||
} else if (personalPageKeys.has(page.page_key)) {
|
||||
personalPages.push(formatPage(page));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,10 +84,12 @@ router.get('/users/:userId/page-access', requireAuth, async (req, res) => {
|
||||
p.page_name,
|
||||
p.page_path,
|
||||
p.category,
|
||||
COALESCE(upa.can_access, dpp.can_access, p.is_default_accessible, 0) as can_access,
|
||||
upa.granted_at
|
||||
COALESCE(upp.can_access, dpp.can_access, p.is_default_accessible, 0) as can_access,
|
||||
upp.granted_at
|
||||
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
|
||||
ON dpp.department_id = ?
|
||||
AND (dpp.page_name = CONCAT('s1.', p.page_key) OR dpp.page_name = p.page_key)
|
||||
|
||||
Reference in New Issue
Block a user