src/App.js Güncelle

This commit is contained in:
irem 2025-04-15 06:46:06 +00:00
parent c325e6ca79
commit b0f5cdbb4c
1 changed files with 40 additions and 43 deletions

View File

@ -1,53 +1,50 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { BrowserRouter as Router, Route, Routes, Navigate } from 'react-router-dom'; import { BrowserRouter as Router, Route, Routes, Navigate, Outlet } from 'react-router-dom';
import LoginPage from './pages/LoginPage'; // Login sayfası import LoginPage from './pages/LoginPage';
import Navbar from './components/Navbar'; // Navbar bileşeni import Navbar from './components/Navbar';
import Sidebar from './components/Sidebar'; // Sidebar bileşeni import Sidebar from './components/Sidebar';
import AdminRoutes from './roles/AdminRoutes'; // Admin route bileşenleri import AdminRoutes from './roles/AdminRoutes';
import DistributorRoutes from './roles/DistributorRoutes'; // Distributor route bileşenleri import DistributorRoutes from './roles/DistributorRoutes';
import RetailerRoutes from './roles/RetailerRoutes'; // Retailer route bileşenleri import RetailerRoutes from './roles/RetailerRoutes';
import CustomerRoutes from './roles/CustomerRoutes'; // Customer route bileşenleri import CustomerRoutes from './roles/CustomerRoutes';
function App() { const ProtectedLayout = ({ user, onLogout }) => (
const [user, setUser] = useState(null); // Kullanıcı verisini tutan durum <div className="flex h-screen bg-gray-100">
<Sidebar user={user} onLogout={onLogout} />
<div className="flex-1 flex flex-col overflow-hidden">
<Navbar user={user} onLogout={onLogout} />
<main className="flex-1 overflow-x-hidden overflow-y-auto bg-gray-200 p-4">
<Outlet />
</main>
</div>
</div>
);
const handleLogin = (userData) => { const App = () => {
setUser(userData); // Giriş yapan kullanıcının verilerini ayarlıyoruz const [user, setUser] = useState(null);
};
const handleLogout = () => { const handleLogin = (userData) => setUser(userData);
setUser(null); // Kullanıcı çıkışı yaparsa, veriyi sıfırlıyoruz const handleLogout = () => setUser(null);
};
return ( return (
<Router> <Router>
{/* Eğer kullanıcı giriş yapmamışsa, giriş sayfası gösterilsin */} <Routes>
{!user ? ( <Route path="/login" element={!user ? <LoginPage onLogin={handleLogin} /> : <Navigate to="/" />} />
<LoginPage onLogin={handleLogin} />
) : ( {user && (
<div className="flex h-screen bg-gray-100"> <Route element={<ProtectedLayout user={user} onLogout={handleLogout} />}>
{/* Sidebar, kullanıcı rolüne göre gösterilecek */} <Route path="/admin/*" element={user.role === 'admin' ? <AdminRoutes /> : <Navigate to="/" />} />
<Sidebar user={user} onLogout={handleLogout} /> <Route path="/distributor/*" element={user.role === 'distributor' ? <DistributorRoutes /> : <Navigate to="/" />} />
<div className="flex-1 flex flex-col overflow-hidden"> <Route path="/retailer/*" element={user.role === 'retailer' ? <RetailerRoutes /> : <Navigate to="/" />} />
{/* Navbar, kullanıcı bilgisi ve çıkış fonksiyonu ile birlikte */} <Route path="/customer/*" element={user.role === 'customer' ? <CustomerRoutes /> : <Navigate to="/" />} />
<Navbar user={user} onLogout={handleLogout} /> <Route path="/" element={<Navigate to={`/${user.role}`} />} />
<main className="flex-1 overflow-x-hidden overflow-y-auto bg-gray-200 p-4"> </Route>
{/* Kullanıcının rolüne göre yönlendirmeler */} )}
<Routes>
{user.role === 'admin' && <Route path="/*" element={<AdminRoutes />} />} <Route path="*" element={<Navigate to={user ? "/" : "/login"} />} />
{user.role === 'distributor' && <Route path="/*" element={<DistributorRoutes />} />} </Routes>
{user.role === 'retailer' && <Route path="/*" element={<RetailerRoutes />} />}
{user.role === 'customer' && <Route path="/*" element={<CustomerRoutes />} />}
{/* Tanımlanmayan yollar için yönlendirme */}
<Route path="*" element={<Navigate to="/" />} />
</Routes>
</main>
</div>
</div>
)}
</Router> </Router>
); );
} };
export default App; export default App;