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 { 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")} />
);
};
// 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}`)} />
);
};
// 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;