28 lines
670 B
React
28 lines
670 B
React
import React from 'react';
|
|
import { Navigate, Outlet, useLocation } from 'react-router-dom';
|
|
import { useAuth } from './useAuth';
|
|
|
|
const ProtectedRoute = () => {
|
|
const { session, loading } = useAuth();
|
|
const location = useLocation();
|
|
|
|
if (loading) {
|
|
return (
|
|
<div style={{
|
|
display: 'flex', justifyContent: 'center', alignItems: 'center',
|
|
height: '100vh', fontFamily: 'var(--font-heading)', color: 'var(--text-muted)',
|
|
}}>
|
|
Загрузка...
|
|
</div>
|
|
);
|
|
}
|
|
|
|
if (!session) {
|
|
return <Navigate to="/admin/login" state={{ from: location }} replace />;
|
|
}
|
|
|
|
return <Outlet />;
|
|
};
|
|
|
|
export default ProtectedRoute;
|