Uecko_ERP/apps/web/src/routes/require-company-guard.tsx

30 lines
871 B
TypeScript
Raw Normal View History

2026-07-06 10:57:33 +00:00
import { useIdentityAuthSession } from "@erp/identity/client";
import { LoadingOverlay } from "@repo/rdx-ui/components";
import type { ReactNode } from "react";
import { Navigate, useLocation } from "react-router-dom";
interface RequireCompanyRouteGuardProps {
children: ReactNode;
}
export const RequireCompanyRouteGuard = ({ children }: RequireCompanyRouteGuardProps) => {
const location = useLocation();
const { activeCompany, availableCompanies, isLoading } = useIdentityAuthSession();
if (isLoading) {
return <LoadingOverlay />;
}
if (activeCompany) {
return <>{children}</>;
}
const returnTo = `${location.pathname}${location.search}`;
if (availableCompanies.length === 0) {
return <Navigate replace to="/no-companies" />;
}
return <Navigate replace to={`/company-selection?returnTo=${encodeURIComponent(returnTo)}`} />;
};