feat(web): React-фронтенд вместо Flet + fix restore rmtree на bind-mount
web-react/: SPA Vite+React+TS, nginx раздаёт статику и проксирует /api на api:8000 по локалке. docker-compose: web(Flet)->web-react на :80. transfer_crud.backup_restore: чистим содержимое data/radar вместо rmtree точки монтирования (EBUSY).
This commit is contained in:
18
web-react/src/components/ProtectedRoute.tsx
Normal file
18
web-react/src/components/ProtectedRoute.tsx
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Navigate } from "react-router-dom";
|
||||
import type { ReactNode } from "react";
|
||||
import { useAuth } from "../auth/AuthContext";
|
||||
import { Spinner } from "./ui";
|
||||
|
||||
// Пускает дальше только при наличии токена. Пока идёт первичная проверка — спиннер.
|
||||
export function ProtectedRoute({ children }: { children: ReactNode }) {
|
||||
const { token, ready } = useAuth();
|
||||
if (!ready) {
|
||||
return (
|
||||
<div className="spinner-center">
|
||||
<Spinner />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
if (!token) return <Navigate to="/login" replace />;
|
||||
return <>{children}</>;
|
||||
}
|
||||
Reference in New Issue
Block a user