Spaces:
Running
Running
File size: 2,131 Bytes
564baf9 | 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 | import React from 'react';
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import { AuthProvider, useAuth } from './context/AuthContext';
import ProtectedRoute from './components/ProtectedRoute';
// Páginas
import Login from './pages/Login';
import AdminDashboard from './pages/AdminDashboard';
import WaiterPOS from './pages/WaiterPOS';
import CustomerMenu from './pages/CustomerMenu';
import KitchenView from './pages/KitchenView';
// Router base para redirigir dependiendo del rol al loguearse
function RootRedirect() {
const { currentUser, userRole, loading } = useAuth();
if (loading) return <div className="app-container" style={{justifyContent:'center', alignItems:'center'}}>Cargando...</div>;
if (!currentUser) return <Navigate to="/login" replace />;
if (userRole === 'admin') return <Navigate to="/admin" replace />;
if (userRole === 'mesero') return <Navigate to="/pos" replace />;
return <Navigate to="/login" replace />; // Default
}
function App() {
return (
<Router>
<AuthProvider>
<Routes>
<Route path="/" element={<RootRedirect />} />
<Route path="/login" element={<Login />} />
<Route path="/menu" element={<CustomerMenu />} />
{/* Rutas Privadas */}
<Route
path="/admin/*"
element={
<ProtectedRoute allowedRoles={['admin']}>
<AdminDashboard />
</ProtectedRoute>
}
/>
<Route
path="/pos/*"
element={
<ProtectedRoute allowedRoles={['admin', 'mesero']}>
<WaiterPOS />
</ProtectedRoute>
}
/>
<Route
path="/kitchen"
element={
<ProtectedRoute allowedRoles={['admin', 'mesero']}>
<KitchenView />
</ProtectedRoute>
}
/>
{/* Fallback */}
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</AuthProvider>
</Router>
);
}
export default App;
|