import { useEffect } from "react"; import { Routes, Route, Navigate, useNavigate, useLocation } from "react-router-dom"; import LoginPage from "./src/Login/login"; import Dashboard from "./src/dashboard"; import AlumniForm from "./src/form-alumni"; import ExportKlasifikasi from "./src/Export-Klasifikasi"; import ForgotPassword from "./src/forgot-password"; import ProsesKlasifikasi from "./src/proses-klasifikasi"; import ResetPassword from "./src/reset-password"; import TahunAngkatan from "./src/tahun-angkatan"; import ImportData from "./src/ImportData"; import KuesionerAlumni from "./src/kuesioner-alumni"; import KamusKataKunci from "./src/kamus-kata-kunci"; function ProtectedRoute({ children }) { const navigate = useNavigate(); const location = useLocation(); useEffect(() => { const checkAuth = () => { const token = localStorage.getItem('token'); const username = localStorage.getItem('username'); if (!token || !username) { navigate('/', { replace: true }); } }; checkAuth(); // Dengarkan saat logout dari tab browser lain const handleStorageChange = (e) => { if (e.key === 'token' || e.key === 'username' || e.key === null) { checkAuth(); } }; window.addEventListener('storage', handleStorageChange); return () => window.removeEventListener('storage', handleStorageChange); }, [navigate, location]); const token = localStorage.getItem('token'); const username = localStorage.getItem('username'); if (!token || !username) { return ; } return children; } function App() { return ( {/* Rute Publik */} } /> } /> } /> } /> } /> } /> {/* Rute Terproteksi (Wajib Login) */} } /> } /> } /> } /> } /> } /> } /> } /> {/* Fallback jika route tidak ditemukan */} } /> ); } export default App;