31 lines
839 B
TypeScript
31 lines
839 B
TypeScript
'use client';
|
||
import { useRouter, usePathname } from 'next/navigation';
|
||
import { useEffect } from 'react';
|
||
import { useAuth } from '@/fsd/app/provider/AuthContext';
|
||
|
||
const AuthGuard: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
||
const { isAuthenticated, loading } = useAuth();
|
||
const router = useRouter();
|
||
const pathname = usePathname();
|
||
|
||
useEffect(() => {
|
||
if (!loading) {
|
||
if (!isAuthenticated && pathname !== '/login') {
|
||
router.replace('/login');
|
||
}
|
||
}
|
||
}, [loading, isAuthenticated, pathname, router]);
|
||
|
||
if (loading) {
|
||
return <div>Loading...</div>; // Показываем загрузку
|
||
}
|
||
|
||
if (!isAuthenticated && pathname !== '/login') {
|
||
return null; // Не рендерим контент до завершения редиректа
|
||
}
|
||
|
||
return <>{children}</>;
|
||
};
|
||
|
||
export default AuthGuard;
|