fix(auth): TBM 페이지 권한 제어 — restricted 플래그 추가
NAV_MENU의 비admin 페이지가 모두 publicPageKeys에 포함되어 개별 권한(user_page_permissions) 체크가 우회되던 기존 설계 이슈 수정. - work.tbm에 restricted: true 추가 - publicPageKeys 생성 시 restricted 항목 제외 - restricted 페이지는 DB 개별 권한으로만 접근 제어 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -117,7 +117,7 @@ async function _fetchPageAccess(userId) {
|
||||
const NAV_MENU = [
|
||||
{ cat: null, href: '/pages/dashboard-new.html', icon: 'fa-home', label: '대시보드', key: 'dashboard' },
|
||||
{ cat: '작업 관리', items: [
|
||||
{ href: '/pages/work/tbm-mobile.html', icon: 'fa-clipboard-list', label: 'TBM 관리', key: 'work.tbm' },
|
||||
{ href: '/pages/work/tbm-mobile.html', icon: 'fa-clipboard-list', label: 'TBM 관리', key: 'work.tbm', restricted: true },
|
||||
{ href: '/pages/work/report-create-mobile.html', icon: 'fa-file-alt', label: '작업보고서 작성', key: 'work.report_create' },
|
||||
{ href: '/pages/work/analysis.html', icon: 'fa-chart-bar', label: '작업 분석', key: 'work.analysis', admin: true },
|
||||
{ href: `${_tkqcBase}/`, icon: 'fa-exclamation-triangle', label: '부적합 현황', key: 'work.nonconformity', external: true },
|
||||
@@ -282,11 +282,11 @@ async function initAuth() {
|
||||
let accessibleKeys = [];
|
||||
if (!isAdmin) {
|
||||
accessibleKeys = await _fetchPageAccess(currentUser.id);
|
||||
// NAV_MENU에서 admin이 아닌 페이지는 모든 인증 사용자에게 공개
|
||||
// NAV_MENU에서 admin/restricted가 아닌 페이지는 모든 인증 사용자에게 공개
|
||||
const publicPageKeys = NAV_MENU.flatMap(entry => {
|
||||
if (!entry.items) return entry.key ? [entry.key] : [];
|
||||
if (entry.admin) return [];
|
||||
return entry.items.filter(item => !item.admin).map(item => item.key);
|
||||
return entry.items.filter(item => !item.admin && !item.restricted).map(item => item.key);
|
||||
});
|
||||
// 현재 페이지 접근 권한 확인
|
||||
const pageKey = _getCurrentPageKey();
|
||||
|
||||
Reference in New Issue
Block a user