init
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { Navigate } from "react-router";
|
||||
import { useMe } from "../hooks/useAuth";
|
||||
|
||||
interface ProtectedRouteProps {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Компонент для защиты роутов - перенаправляет неавторизованных пользователей на страницу логина
|
||||
*/
|
||||
function ProtectedRoute({ children }: ProtectedRouteProps) {
|
||||
const { data: user, isLoading } = useMe();
|
||||
|
||||
// Показываем загрузку пока проверяем авторизацию
|
||||
if (isLoading) {
|
||||
return (
|
||||
<div className="min-h-screen flex items-center justify-center">
|
||||
<div className="text-xl">Проверка авторизации...</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Если пользователь не авторизован - перенаправляем на логин
|
||||
if (!user) {
|
||||
return <Navigate to="/login" replace />;
|
||||
}
|
||||
|
||||
// Если авторизован - показываем защищённый контент
|
||||
return <>{children}</>;
|
||||
}
|
||||
|
||||
export default ProtectedRoute;
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
import { Navigate } from "react-router";
|
||||
import { useMe } from "../hooks/useAuth";
|
||||
|
||||
interface PublicRouteProps {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Компонент для публичных роутов (логин/регистрация)
|
||||
* Если пользователь уже авторизован - перенаправляет на главную
|
||||
*/
|
||||
function PublicRoute({ children }: PublicRouteProps) {
|
||||
const { data: user, isLoading } = useMe();
|
||||
|
||||
// Показываем загрузку пока проверяем авторизацию
|
||||
if (isLoading) {
|
||||
return (
|
||||
<div className="min-h-screen flex items-center justify-center">
|
||||
<div className="text-xl">Загрузка...</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Если пользователь уже авторизован - перенаправляем на главную
|
||||
if (user) {
|
||||
return <Navigate to="/" replace />;
|
||||
}
|
||||
|
||||
// Если не авторизован - показываем публичный контент (логин/регистрация)
|
||||
return <>{children}</>;
|
||||
}
|
||||
|
||||
export default PublicRoute;
|
||||
|
||||
Reference in New Issue
Block a user