barcha apilar ulandi
This commit is contained in:
33
src/App.tsx
33
src/App.tsx
@@ -30,11 +30,11 @@ import CreateUser from "@/pages/users/ui/Create";
|
||||
import EditUser from "@/pages/users/ui/Edit";
|
||||
import UserList from "@/pages/users/ui/User";
|
||||
import UserDetail from "@/pages/users/ui/UserDetail";
|
||||
import MainProvider from "@/providers/main";
|
||||
import { getMe } from "@/shared/config/api/auth/api";
|
||||
import "@/shared/config/i18n";
|
||||
import useUserStore from "@/shared/hooks/user";
|
||||
import { getAuthToken } from "@/shared/lib/authCookies";
|
||||
import { Sidebar } from "@/widgets/sidebar/ui/Sidebar";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useEffect } from "react";
|
||||
import {
|
||||
Navigate,
|
||||
@@ -45,24 +45,35 @@ import {
|
||||
} from "react-router-dom";
|
||||
|
||||
const App = () => {
|
||||
const { user } = useUserStore();
|
||||
const token = getAuthToken();
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
const { data: user } = useQuery({
|
||||
queryKey: ["get_me"],
|
||||
queryFn: () => getMe(),
|
||||
select(data) {
|
||||
return data.data.data;
|
||||
},
|
||||
enabled: !!token,
|
||||
});
|
||||
|
||||
const hideSidebarPaths = ["/login"];
|
||||
const shouldShowSidebar = !hideSidebarPaths.includes(location.pathname);
|
||||
|
||||
useEffect(() => {
|
||||
if (token && user) {
|
||||
if (token && user && user.role === "moderator") {
|
||||
navigate("/user");
|
||||
} else if (token && user && user.role === "tour_admin") {
|
||||
navigate("/finance ");
|
||||
} else if (token && user && user.role === "buxgalter") {
|
||||
navigate("/finance");
|
||||
} else if (!token && !user) {
|
||||
navigate("/login");
|
||||
}
|
||||
}, [token, user]);
|
||||
|
||||
return (
|
||||
<MainProvider>
|
||||
<>
|
||||
<div className="flex max-lg:flex-col bg-gray-900">
|
||||
{shouldShowSidebar && <Sidebar role={user ? user.role : "admin"} />}
|
||||
|
||||
@@ -78,11 +89,17 @@ const App = () => {
|
||||
<Route path="/agency/:id/edit" element={<EditAgecy />} />
|
||||
<Route path="/tours/:id" element={<TourDetail />} />
|
||||
<Route path="/employees" element={<Employees />} />
|
||||
<Route path="/finance" element={<FinancePage />} />
|
||||
<Route
|
||||
path="/finance"
|
||||
element={<FinancePage user={user ? user.role : "moderator"} />}
|
||||
/>
|
||||
<Route path="/purchases/:id/" element={<PurchaseDetailPage />} />
|
||||
<Route path="/travel/booking/:id/" element={<FinanceDetailTour />} />
|
||||
<Route path="/bookings/:id/" element={<FinanceDetailUsers />} />
|
||||
<Route path="/tours" element={<Tours />} />
|
||||
<Route
|
||||
path="/tours"
|
||||
element={<Tours user={user ? user.role : "moderator"} />}
|
||||
/>
|
||||
<Route path="/tours/setting" element={<ToursSetting />} />
|
||||
<Route path="/tours/:id/edit" element={<CreateEditTour />} />
|
||||
<Route path="/tours/create" element={<CreateEditTour />} />
|
||||
@@ -102,7 +119,7 @@ const App = () => {
|
||||
<Route path="/site-banner/" element={<SiteBannerAdmin />} />
|
||||
</Routes>
|
||||
</div>
|
||||
</MainProvider>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user