Files
TK-FB-Project/web-ui/js/load-sidebar.js

46 lines
1.3 KiB
JavaScript

// ✅ /js/load-sidebar.js (access_level 기반 메뉴 필터링)
document.addEventListener('DOMContentLoaded', async () => {
try {
// 1) 사이드바 HTML 로딩
const res = await fetch('/components/sidebar.html');
const html = await res.text();
document.getElementById('sidebar-container').innerHTML = html;
// 2) 토큰 존재 확인
const token = localStorage.getItem('token');
if (!token) return;
// 3) JWT 파싱해서 access_level 추출
let access;
try {
const payload = JSON.parse(atob(token.split('.')[1]));
access = payload.access_level;
} catch (err) {
console.warn('JWT 파싱 실패:', err);
return;
}
// 4) 시스템 계정은 전부 유지
if (access === 'system') return;
// 5) 클래스 이름 목록
const classMap = [
'worker-only',
'group-leader-only',
'support-only',
'admin-only',
'system-only'
];
// 6) 본인 권한에 해당하지 않는 요소 제거
classMap.forEach(cls => {
const required = cls.replace('-only', '').replace('-', '_'); // 'group-leader-only' → 'group_leader'
if (access !== required) {
document.querySelectorAll(`.${cls}`).forEach(el => el.remove());
}
});
} catch (err) {
console.error('🔴 사이드바 로딩 실패:', err);
}
});