// 공통 인증 및 네비게이션 관리 class AuthCommon { static init(currentPage = '') { // 토큰 기반 사용자 정보 확인 const user = TokenManager.getUser(); if (!user) { window.location.href = 'index.html'; return null; } // 전역 currentUser 설정 window.currentUser = user; // 헤더 생성 (페이지별로 다른 active 상태) CommonHeader.init(currentPage); // 사용자 정보 표시 this.updateUserDisplay(user); // 네비게이션 권한 업데이트 this.updateNavigation(user); return user; } static updateUserDisplay(user) { const userDisplayElement = document.getElementById('userDisplay'); if (userDisplayElement) { const displayName = user.full_name || user.username; userDisplayElement.textContent = `${displayName} (${user.username})`; } } static updateNavigation(user) { const isAdmin = user.role === 'admin'; // 관리자 전용 메뉴들 const adminMenus = [ 'dailyWorkBtn', 'listBtn', 'summaryBtn', 'projectBtn' ]; adminMenus.forEach(menuId => { const element = document.getElementById(menuId); if (element) { element.style.display = isAdmin ? '' : 'none'; } }); // 관리자 버튼 처리 (드롭다운 vs 단순 버튼) const adminBtnContainer = document.getElementById('adminBtnContainer'); const userPasswordBtn = document.getElementById('userPasswordBtn'); if (isAdmin) { // 관리자: 드롭다운 메뉴 표시 if (adminBtnContainer) adminBtnContainer.style.display = ''; if (userPasswordBtn) userPasswordBtn.style.display = 'none'; } else { // 일반 사용자: 비밀번호 변경 버튼만 표시 if (adminBtnContainer) adminBtnContainer.style.display = 'none'; if (userPasswordBtn) userPasswordBtn.style.display = ''; } } static logout() { AuthAPI.logout(); } } // 전역 함수들 function logout() { AuthCommon.logout(); } function showSection(sectionName) { if (typeof window.showSection === 'function') { window.showSection(sectionName); } }