bug fix
This commit is contained in:
150
src/App.tsx
150
src/App.tsx
@@ -15,6 +15,7 @@ import {
|
||||
import AddNews from "@/pages/news/ui/AddNews";
|
||||
import News from "@/pages/news/ui/News";
|
||||
import NewsCategory from "@/pages/news/ui/NewsCategory";
|
||||
import Page from "@/pages/profile/ui/Profile";
|
||||
import Seo from "@/pages/seo/ui/Seo";
|
||||
import SiteBannerAdmin from "@/pages/site-banner/ui/Banner";
|
||||
import PolicyCrud from "@/pages/site-page/ui/PolicyCrud";
|
||||
@@ -35,6 +36,8 @@ import "@/shared/config/i18n";
|
||||
import { getAuthToken } from "@/shared/lib/authCookies";
|
||||
import { cn } from "@/shared/lib/utils";
|
||||
import { Sidebar } from "@/widgets/sidebar/ui/Sidebar";
|
||||
import { useWelcomeStore } from "@/widgets/welcome/lib/hook";
|
||||
import Welcome from "@/widgets/welcome/ui/welcome";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useEffect } from "react";
|
||||
import {
|
||||
@@ -49,85 +52,104 @@ const App = () => {
|
||||
const token = getAuthToken();
|
||||
const navigate = useNavigate();
|
||||
const location = useLocation();
|
||||
const { setOpenModal } = useWelcomeStore();
|
||||
|
||||
const { data: user } = useQuery({
|
||||
queryKey: ["get_me"],
|
||||
queryFn: () => getMe(),
|
||||
select(data) {
|
||||
return data.data.data;
|
||||
},
|
||||
select: (data) => data.data.data,
|
||||
enabled: !!token,
|
||||
});
|
||||
|
||||
const hideSidebarPaths = ["/login"];
|
||||
const shouldShowSidebar = !hideSidebarPaths.includes(location.pathname);
|
||||
|
||||
// 🔹 Avtorizatsiya yo‘nalishlari
|
||||
useEffect(() => {
|
||||
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) {
|
||||
if (token && user) {
|
||||
if (user.role === "moderator") {
|
||||
navigate("/user");
|
||||
} else if (user.role === "tour_admin") {
|
||||
navigate("/profile");
|
||||
} else if (user.role === "buxgalter") {
|
||||
navigate("/finance");
|
||||
}
|
||||
} else if (!token) {
|
||||
navigate("/login");
|
||||
}
|
||||
}, [token, user]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="flex max-lg:flex-col bg-gray-900">
|
||||
{shouldShowSidebar && <Sidebar role={user ? user.role : "admin"} />}
|
||||
// 🔹 Faqat userda ism yoki familiya yo‘q bo‘lsa Welcome modalni ochamiz
|
||||
useEffect(() => {
|
||||
if (
|
||||
user &&
|
||||
(!user.first_name || !user.last_name) &&
|
||||
location.pathname !== "/login" &&
|
||||
user.role !== "moderator"
|
||||
) {
|
||||
setOpenModal(true);
|
||||
} else {
|
||||
setOpenModal(false);
|
||||
}
|
||||
}, [user, location.pathname]);
|
||||
|
||||
<main
|
||||
className={cn(
|
||||
"flex-1 min-h-screen bg-gray-900 transition-all",
|
||||
shouldShowSidebar ? "lg:ml-64" : "ml-0"
|
||||
)}
|
||||
>
|
||||
<Routes>
|
||||
<Route path="/" element={<Navigate to={"/user"} />} />
|
||||
<Route path="/user" element={<UserList />} />
|
||||
<Route path="/login" element={<Login />} />
|
||||
<Route path="/users/create" element={<CreateUser />} />
|
||||
<Route path="/users/:id/edit" element={<EditUser />} />
|
||||
<Route path="/users/:id/" element={<UserDetail />} />
|
||||
<Route path="/agencies" element={<Agencies />} />
|
||||
<Route path="/agencies/:id" element={<AgencyDetail />} />
|
||||
<Route path="/agency/:id/edit" element={<EditAgecy />} />
|
||||
<Route path="/tours/:id" element={<TourDetail />} />
|
||||
<Route path="/employees" element={<Employees />} />
|
||||
<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 user={user ? user.role : "moderator"} />}
|
||||
/>
|
||||
<Route path="/tours/setting" element={<ToursSetting />} />
|
||||
<Route path="/tours/:id/edit" element={<CreateEditTour />} />
|
||||
<Route path="/tours/create" element={<CreateEditTour />} />
|
||||
<Route path="/bookings" element={<Bookings />} />
|
||||
<Route path="/news" element={<News />} />
|
||||
<Route path="/news/add" element={<AddNews />} />
|
||||
<Route path="/news/edit/:id" element={<AddNews />} />
|
||||
<Route path="/news/categories" element={<NewsCategory />} />
|
||||
<Route path="/faq" element={<Faq />} />
|
||||
<Route path="/faq/categories" element={<FaqCategory />} />
|
||||
<Route path="/support/tours" element={<SupportAgency />} />
|
||||
<Route path="/support/user" element={<SupportTours />} />
|
||||
<Route path="/site-seo" element={<Seo />} />
|
||||
<Route path="/site-pages/" element={<SitePage />} />
|
||||
<Route path="/site-help/" element={<PolicyCrud />} />
|
||||
<Route path="/site-settings/" element={<TourSettings />} />
|
||||
<Route path="/site-banner/" element={<SiteBannerAdmin />} />
|
||||
</Routes>
|
||||
</main>
|
||||
</div>
|
||||
</>
|
||||
return (
|
||||
<div className="flex max-lg:flex-col bg-gray-900">
|
||||
{shouldShowSidebar && <Sidebar role={user ? user.role : "admin"} />}
|
||||
|
||||
<main
|
||||
className={cn(
|
||||
"flex-1 min-h-screen bg-gray-900 transition-all",
|
||||
shouldShowSidebar ? "lg:ml-64" : "ml-0",
|
||||
)}
|
||||
>
|
||||
{/* ✅ Welcome faqat login sahifasida ko‘rinmaydi */}
|
||||
{location.pathname !== "/login" && <Welcome />}
|
||||
|
||||
<Routes>
|
||||
<Route path="/" element={<Navigate to={"/user"} />} />
|
||||
<Route path="/user" element={<UserList />} />
|
||||
<Route path="/login" element={<Login />} />
|
||||
<Route path="/profile" element={<Page />} />
|
||||
<Route path="/users/create" element={<CreateUser />} />
|
||||
<Route path="/users/:id/edit" element={<EditUser />} />
|
||||
<Route path="/users/:id/" element={<UserDetail />} />
|
||||
<Route path="/agencies" element={<Agencies />} />
|
||||
<Route path="/agencies/:id" element={<AgencyDetail />} />
|
||||
<Route path="/agency/:id/edit" element={<EditAgecy />} />
|
||||
<Route path="/tours/:id" element={<TourDetail />} />
|
||||
<Route path="/employees" element={<Employees />} />
|
||||
<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 user={user ? user.role : "moderator"} />}
|
||||
/>
|
||||
<Route path="/tours/setting" element={<ToursSetting />} />
|
||||
<Route path="/tours/:id/edit" element={<CreateEditTour />} />
|
||||
<Route path="/tours/create" element={<CreateEditTour />} />
|
||||
<Route path="/bookings" element={<Bookings />} />
|
||||
<Route path="/news" element={<News />} />
|
||||
<Route path="/news/add" element={<AddNews />} />
|
||||
<Route path="/news/edit/:id" element={<AddNews />} />
|
||||
<Route path="/news/categories" element={<NewsCategory />} />
|
||||
<Route path="/faq" element={<Faq />} />
|
||||
<Route path="/faq/categories" element={<FaqCategory />} />
|
||||
<Route path="/support/tours" element={<SupportAgency />} />
|
||||
<Route path="/support/user" element={<SupportTours />} />
|
||||
<Route path="/site-seo" element={<Seo />} />
|
||||
<Route path="/site-pages/" element={<SitePage />} />
|
||||
<Route path="/site-help/" element={<PolicyCrud />} />
|
||||
<Route path="/site-settings/" element={<TourSettings />} />
|
||||
<Route path="/site-banner/" element={<SiteBannerAdmin />} />
|
||||
</Routes>
|
||||
</main>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user