Files
TK-FB-Project/web-ui/js/auth-check.js
Hyungi Ahn e9d78e48a7 fix: 스크립트 로딩 순서 및 의존성 문제 해결
🐛 해결된 문제:
- auth-check.js의 ES6 import 문법 오류
- window.apiCall is not a function 오류
- 스크립트 로딩 순서로 인한 의존성 문제

🔧 수정 내용:
1. auth-check.js:
   - ES6 import 제거 → 함수 직접 구현
   - isLoggedIn, getUser, clearAuthData 내장
   - 모듈 의존성 완전 제거

2. 스크립트 로딩 순서 최적화:
   - api-config.js: defer 제거 (즉시 로드)
   - auth-check.js: defer 유지
   - modern-dashboard.js: defer 유지

3. modern-dashboard.js:
   - API 함수 로드 대기 로직 추가
   - 최대 5초 대기 후 오류 처리
   - 안전한 초기화 보장

 개선 효과:
- 모든 JavaScript 오류 해결
- 안정적인 스크립트 로딩 순서
- API 함수 의존성 문제 해결
- 대시보드 정상 초기화 보장

테스트: http://localhost:20000/pages/dashboard/group-leader.html
2025-11-03 11:59:06 +09:00

42 lines
1.4 KiB
JavaScript

// /js/auth-check.js
// auth.js의 함수들을 직접 구현 (모듈 의존성 제거)
function isLoggedIn() {
const token = localStorage.getItem('token');
return token && token !== 'undefined' && token !== 'null';
}
function getUser() {
const user = localStorage.getItem('user');
return user ? JSON.parse(user) : null;
}
function clearAuthData() {
localStorage.removeItem('token');
localStorage.removeItem('user');
}
// 즉시 실행 함수로 스코프를 보호하고 로직을 실행
(function() {
if (!isLoggedIn()) {
console.log('🚨 인증되지 않은 사용자. 로그인 페이지로 이동합니다.');
clearAuthData(); // 만약을 위해 한번 더 정리
window.location.href = '/index.html';
return; // 이후 코드 실행 방지
}
const currentUser = getUser();
// 사용자 정보가 유효한지 확인 (토큰은 있지만 유저 정보가 깨졌을 경우)
if (!currentUser || !currentUser.username || !currentUser.role) {
console.error('🚨 사용자 정보가 유효하지 않습니다. 강제 로그아웃 처리합니다.');
clearAuthData();
window.location.href = '/index.html';
return;
}
console.log(`${currentUser.username}(${currentUser.role})님 인증 성공.`);
// 역할 기반 메뉴 제어 로직은 각 컴포넌트 로더(load-navbar.js 등)로 이전함.
// 전역 변수 할당(window.currentUser) 제거.
})();