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 { ProfessionalRegister } from "./pages/ProfessionalRegister"; 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}
); }; // Navbar simplificada apenas para Home const SimpleNavbar: React.FC = () => { return ( ); }; // Componente Home com roteamento (com Navbar simplificada) const HomeWithRouter: React.FC = () => { const navigate = useNavigate(); const { user } = useAuth(); return (
navigate(user ? "/painel" : "/entrar")} />
); }; // Componente de Login com redirecionamento const LoginWithRouter: React.FC = () => { const navigate = useNavigate(); const { user } = useAuth(); if (user) { return ; } return ( navigate(`/${page}`)} /> ); }; // Componente de Registro com redirecionamento const RegisterWithRouter: React.FC = () => { const navigate = useNavigate(); const { user } = useAuth(); if (user) { return ; } return ( navigate(`/${page}`)} /> ); }; // Componente de Cadastro de Profissional com redirecionamento const ProfessionalRegisterWithRouter: React.FC = () => { const navigate = useNavigate(); const { user } = useAuth(); if (user) { return ; } return ( navigate(`/${page}`)} /> ); }; // Footer component const Footer: React.FC = () => { const navigate = useNavigate(); return ( ); }; const AppContent: React.FC = () => { const location = useLocation(); const showFooter = location.pathname === "/"; return ( <> {/* Rotas Públicas */} } /> } /> } /> } /> (window.location.href = `/${page}`)} /> } /> (window.location.href = `/${page}`)} /> } /> (window.location.href = `/${page}`)} /> } /> {/* Rotas Protegidas - Todos os usuários autenticados */} } /> } /> } /> {/* Rota de solicitação de evento - Clientes e Administradores */} } /> {/* Rotas Administrativas - Apenas gestão */} } /> } /> } /> } /> } /> {/* Rota padrão - redireciona para home */} } /> ); }; function App() { return ( ); } export default App;