import React from "react"; import { BrowserRouter, Routes, Route, Navigate, useNavigate, useLocation } from "react-router-dom"; import { Navbar } from "./components/Navbar"; import { Home } from "./pages/Home"; import { Dashboard } from "./pages/Dashboard"; import { Login } from "./pages/Login"; import { Register } from "./pages/Register"; import { TeamPage } from "./pages/Team"; import { FinancePage } from "./pages/Finance"; import { SettingsPage } from "./pages/Settings"; import { CourseManagement } from "./pages/CourseManagement"; import { InspirationPage } from "./pages/Inspiration"; import { UserApproval } from "./pages/UserApproval"; import { PrivacyPolicy } from "./pages/PrivacyPolicy"; import { TermsOfUse } from "./pages/TermsOfUse"; import { LGPD } from "./pages/LGPD"; import { AuthProvider, useAuth } from "./contexts/AuthContext"; import { DataProvider } from "./contexts/DataContext"; import { UserRole } from "./types"; import { ShieldAlert } from "lucide-react"; // Componente de acesso negado const AccessDenied: React.FC = () => { const navigate = useNavigate(); return (

Acesso Negado

Você não tem permissão para acessar esta página.

); }; // Componente de rota protegida interface ProtectedRouteProps { children: React.ReactNode; allowedRoles?: UserRole[]; } const ProtectedRoute: React.FC = ({ children, allowedRoles }) => { const { user } = useAuth(); if (!user) { return ; } if (allowedRoles && allowedRoles.length > 0 && !allowedRoles.includes(user.role)) { return ; } return <>{children}; }; // Wrapper para páginas que usam o sistema antigo de navegação const PageWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => { const navigate = useNavigate(); const location = useLocation(); const handleNavigate = (page: string) => { navigate(`/${page}`); }; const getCurrentPage = () => { const path = location.pathname.substring(1) || "home"; return path; }; return (
{children}
); }; // Componente Home com roteamento const HomeWithRouter: React.FC = () => { const navigate = useNavigate(); const { user } = useAuth(); return ( navigate(user ? "/painel" : "/entrar")} />