feat(nav): restrict admin menu to only display dashboard tab

This commit is contained in:
2026-06-10 09:22:10 +09:00
parent 35c5b1e0fa
commit 525dbd77d4

View File

@@ -32,6 +32,23 @@ export function renderNavigation(onTabChange: (tab: string) => void) {
// 기존 메뉴 렌더링
(Object.keys(MENU_CONFIG) as Array<keyof typeof MENU_CONFIG>).forEach(catKey => {
const config = MENU_CONFIG[catKey];
// 역할에 따라 노출할 서브탭 필터링
const visibleTabs = config.tabs.filter((tab: string) => {
if (state.currentUserRole === 'admin') {
// 관리자(admin)일 경우 대시보드 탭만 노출
return tab === '대시보드';
} else {
// 실무자(user)일 경우 대시보드 제외한 모든 탭 노출
return tab !== '대시보드';
}
});
// 노출할 서브탭이 없으면 해당 대분류 GNB 메뉴도 렌더링하지 않음
if (visibleTabs.length === 0) {
return;
}
const isActive = state.activeCategory === catKey;
const group = document.createElement('div');
@@ -41,14 +58,6 @@ export function renderNavigation(onTabChange: (tab: string) => void) {
trigger.className = 'gnb-trigger';
trigger.textContent = config.label;
// 역할에 따라 노출할 서브탭 필터링
const visibleTabs = config.tabs.filter((tab: string) => {
if (tab === '대시보드' && state.currentUserRole !== 'admin') {
return false;
}
return true;
});
trigger.addEventListener('click', () => {
if (state.activeCategory !== catKey) {
state.activeCategory = catKey as any;