import { Routes, Route, Navigate, useLocation } from 'react-router-dom'; import { useAuth } from '@/hooks/useAuth'; import Layout from '@/components/layout/Layout'; import { ReleaseNotesDialog } from '@/components/ReleaseNotesDialog'; import LoginPage from '@/pages/LoginPage'; import AdminPage from '@/pages/AdminPage'; import TrackerPage from '@/pages/TrackerPage'; import BillsPage from '@/pages/BillsPage'; import CategoriesPage from '@/pages/CategoriesPage'; import SettingsPage from '@/pages/SettingsPage'; import StatusPage from '@/pages/StatusPage'; import ReleaseNotesPage from '@/pages/ReleaseNotesPage'; import DataPage from '@/pages/DataPage'; import ProfilePage from '@/pages/ProfilePage'; function RequireAuth({ children, role }) { const { user, singleUserMode } = useAuth(); const location = useLocation(); // Loading state if (user === undefined) { return (
Loading...
); } // Single-user mode bypass if (singleUserMode && role === 'user') return children; // Not authenticated if (!user) { return ; } const roleAllowed = !role || user.role === role || (role === 'user' && user.role === 'admin'); // Role mismatch if (!roleAllowed) { return ; } return children; } export default function App() { const { user } = useAuth(); return ( <> {/* Release notes (only for user role) */} {user?.role === 'user' && } } /> } /> } > } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }