-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrouter.tsx
More file actions
80 lines (73 loc) · 5.16 KB
/
Copy pathrouter.tsx
File metadata and controls
80 lines (73 loc) · 5.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import React from 'react';
import { createBrowserRouter, Outlet } from "react-router"; // Alterado de react-router-dom
import { MainLayout } from './components/layout/MainLayout';
import { SuperAdminLayout } from './components/layout/SuperAdminLayout';
import { HomePage } from './pages/HomePage';
import { AuthPage } from './pages/AuthPage';
import { DashboardPage } from './pages/DashboardPage';
import ProductsPage from './pages/ProductsPage';
import { ProductCreatePage } from './pages/ProductCreatePage';
import { ProductEditPage } from './pages/ProductEditPage';
import { CheckoutPage } from './pages/CheckoutPage';
import { ThankYouPage } from './pages/ThankYouPage';
import { VendasPage } from './pages/VendasPage';
import { ClientesPage } from './pages/ClientesPage';
import { CarrinhosAbandonadosPage } from './pages/CarrinhosAbandonadosPage';
import { IntegracoesPage } from './pages/IntegracoesPage';
import { ConfiguracoesPage } from './pages/ConfiguracoesPage';
// Super Admin Pages
import { SuperAdminDashboardPage } from './pages/superadmin/SuperAdminDashboardPage';
import { PlatformSettingsPage } from './pages/superadmin/PlatformSettingsPage';
import { SuperAdminUsersPage } from './pages/superadmin/SuperAdminUsersPage';
import { SuperAdminSalesPage } from './pages/superadmin/SuperAdminSalesPage';
import { SuperAdminAuditLogPage } from './pages/superadmin/SuperAdminAuditLogPage';
import { SuperAdminAllProductsPage } from './pages/superadmin/SuperAdminAllProductsPage';
// Import ProtectedRoute and SuperAdminProtectedRoute from App.tsx
// Certifique-se que App.tsx exporta estes componentes.
import { ProtectedRoute, SuperAdminProtectedRoute } from './App';
import { ErrorBoundary } from './ErrorBoundary';
// Root component for overall layout structure, if needed, or just an Outlet
const RootLayout = () => {
return (
<>
{/* Você pode adicionar elementos globais aqui, como um sistema de notificação */}
<Outlet />
</>
);
};
export const router = createBrowserRouter([
{
element: <RootLayout />,
errorElement: <ErrorBoundary />, // Error boundary para todas as rotas filhas
children: [
{ path: "/auth", element: <AuthPage /> },
{ path: "/", element: <HomePage /> },
{ path: "/checkout/:slug", element: <CheckoutPage /> },
{ path: "/thank-you/:orderId", element: <ThankYouPage /> },
// Regular User Routes
{ path: "/dashboard", element: <ProtectedRoute><MainLayout><DashboardPage /></MainLayout></ProtectedRoute> },
{ path: "/produtos", element: <ProtectedRoute><MainLayout><ProductsPage /></MainLayout></ProtectedRoute> },
{ path: "/produtos/novo", element: <ProtectedRoute><MainLayout><ProductCreatePage /></MainLayout></ProtectedRoute> },
{ path: "/produtos/editar/:productId", element: <ProtectedRoute><MainLayout><ProductEditPage /></MainLayout></ProtectedRoute> },
{ path: "/vendas", element: <ProtectedRoute><MainLayout><VendasPage /></MainLayout></ProtectedRoute> },
{ path: "/clientes", element: <ProtectedRoute><MainLayout><ClientesPage /></MainLayout></ProtectedRoute> },
{ path: "/carrinhos-abandonados", element: <ProtectedRoute><MainLayout><CarrinhosAbandonadosPage /></MainLayout></ProtectedRoute> },
{ path: "/integracoes", element: <ProtectedRoute><MainLayout><IntegracoesPage /></MainLayout></ProtectedRoute> },
{ path: "/configuracoes", element: <ProtectedRoute><MainLayout><ConfiguracoesPage /></MainLayout></ProtectedRoute> },
// Super Admin Routes
{ path: "/superadmin/dashboard", element: <SuperAdminProtectedRoute><SuperAdminLayout><SuperAdminDashboardPage /></SuperAdminLayout></SuperAdminProtectedRoute> },
{ path: "/superadmin/configuracoes-plataforma", element: <SuperAdminProtectedRoute><SuperAdminLayout><PlatformSettingsPage /></SuperAdminLayout></SuperAdminProtectedRoute> },
{ path: "/superadmin/usuarios", element: <SuperAdminProtectedRoute><SuperAdminLayout><SuperAdminUsersPage /></SuperAdminLayout></SuperAdminProtectedRoute> },
{ path: "/superadmin/vendas-gerais", element: <SuperAdminProtectedRoute><SuperAdminLayout><SuperAdminSalesPage /></SuperAdminLayout></SuperAdminProtectedRoute> },
{ path: "/superadmin/audit-log", element: <SuperAdminProtectedRoute><SuperAdminLayout><SuperAdminAuditLogPage /></SuperAdminLayout></SuperAdminProtectedRoute> },
{ path: "/superadmin/todos-produtos", element: <SuperAdminProtectedRoute><SuperAdminLayout><SuperAdminAllProductsPage /></SuperAdminLayout></SuperAdminProtectedRoute> },
// Catch-all: Esta lógica precisa ser repensada com createBrowserRouter.
// Usualmente, um splat route '*' no final do array de children pode ser usado,
// ou um redirecionamento se a autenticação falhar dentro de ProtectedRoute.
// Se ProtectedRoute redireciona para /auth, e /auth é público, então o fluxo é mantido.
// Para um 404 geral *após* a autenticação, pode-se adicionar um splat route ao final das rotas protegidas.
// A ErrorBoundary lida com rotas não encontradas de forma geral se não houver match.
// O ProtectedRoute já redireciona para /dashboard se o usuário estiver autenticado mas tentar acessar uma rota inexistente.
]
}
]);