import React from 'react'; import { BrowserRouter as Router, Routes, Route, Navigate, useLocation } from 'react-router-dom'; import './Styles.css'; import './Styles/auth.css'; import Header from './components/header'; import Footer from './components/footer'; import Hero from './components/hero'; import Features from './components/Features'; import Privacy from './components/Privacy'; import DiagnosisPage from './components/DiagnosisPage'; import Login from './components/Login'; import Register from './components/Register'; import AdminDashboard from './components/AdminDashboard'; // --- 1. PROTEKSI KHUSUS ADMIN --- // Jika User biasa mencoba masuk, lempar ke /diagnosis const AdminRoute = ({ children }) => { const token = localStorage.getItem("token"); const role = localStorage.getItem("user_role"); const location = useLocation(); if (!token) { return ; } if (role !== 'admin') { return ; } return children; }; // --- 2. PROTEKSI KHUSUS USER BIASA --- // Jika Admin mencoba masuk, lempar ke /admin const UserRoute = ({ children }) => { const token = localStorage.getItem("token"); const role = localStorage.getItem("user_role"); const location = useLocation(); if (!token) { return ; } if (role === 'admin') { return ; } return children; }; // --- Halaman Home (Publik) --- const HomePage = () => { const role = localStorage.getItem("user_role"); // Logika tombol "Mulai" di Hero const navigateTo = (page) => { if (page === 'diagnosis') { if (role === 'admin') { window.location.href = '/admin'; } else { window.location.href = '/diagnosis'; } } }; return ( <> ); }; const App = () => { const token = localStorage.getItem("token"); const userFullname = localStorage.getItem("user_fullname") || "Pengguna"; const userRole = localStorage.getItem("user_role") || "user"; const authStatusData = { isLoggedIn: !!token, user: { name: userFullname, role: userRole } }; return (
} /> } /> } /> {/* Halaman Chat: HANYA USER BIASA */} } /> {/* Halaman Admin: HANYA ADMIN */} } /> } />