Files
cpost-admin-front/src/App.jsx
Samandar Turgunboyev 1e5357ec39 Initial commit
2025-09-09 10:46:03 +05:00

152 lines
3.9 KiB
JavaScript

// App.js
import { Navigate, Route, Routes } from 'react-router-dom';
import RoleProtectedRoute from './components/RoleProtectedRoute';
import Sidebar from './components/Sidebar';
import { AuthProvider } from './context/AuthContext';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import Branches from './pages/Branches';
import Clients from './pages/Clients';
import Currency from './pages/Currency';
import Employees from './pages/Employees';
import Login from './pages/Login';
import Payments from './pages/Payments';
import Permissions from './pages/Permissions'; // Yangi sahifa
import Reference from './pages/Reference';
import Warhouses from './pages/Warhouses';
const queryClient = new QueryClient();
function AppLayout({ children }) {
return (
<QueryClientProvider client={queryClient}>
<div className="flex min-h-screen md:ml-[250px]">
<Sidebar />
<main className="flex-1 p-4 bg-gray-100">{children}</main>
</div>
</QueryClientProvider>
);
}
function App() {
return (
<AuthProvider>
<Routes>
{/* Login */}
<Route path="/login" element={<Login />} />
{/* Asosiy sahifa Clients */}
<Route
path="/"
element={
<RoleProtectedRoute allowedRoles={['admin', 'uzb_worker', 'china_worker']}>
<AppLayout>
<Clients />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Clients */}
<Route
path="/clients"
element={
<RoleProtectedRoute allowedRoles={['admin', 'uzb_worker', 'china_worker']}>
<AppLayout>
<Clients />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Employees - faqat admin */}
<Route
path="/employees"
element={
<RoleProtectedRoute allowedRoles={['admin']}>
<AppLayout>
<Employees />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Payments */}
<Route
path="/payments"
element={
<RoleProtectedRoute allowedRoles={['admin', 'uzb_worker', 'china_worker']}>
<AppLayout>
<Payments />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Branches - faqat admin */}
<Route
path="/branches"
element={
<RoleProtectedRoute allowedRoles={['admin']}>
<AppLayout>
<Branches />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Currency */}
<Route
path="/currency"
element={
<RoleProtectedRoute allowedRoles={['admin', 'uzb_worker', 'china_worker']}>
<AppLayout>
<Currency />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Permissions - faqat admin */}
<Route
path="/permissions"
element={
<RoleProtectedRoute allowedRoles={['admin']}>
<AppLayout>
<Permissions />
</AppLayout>
</RoleProtectedRoute>
}
/>
<Route
path="/reference"
element={
<RoleProtectedRoute allowedRoles={['admin']}>
<AppLayout>
<Reference />
</AppLayout>
</RoleProtectedRoute>
}
/>
<Route
path="/warhouses"
element={
<RoleProtectedRoute allowedRoles={['admin']}>
<AppLayout>
<Warhouses />
</AppLayout>
</RoleProtectedRoute>
}
/>
{/* Default redirect */}
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</AuthProvider>
);
}
export default App;