File size: 988 Bytes
391c43e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 'use client';
import { useEffect, useState } from 'react';
import { useRouter } from 'next/navigation';
export function useAuth() {
const router = useRouter();
const [isChecking, setIsChecking] = useState(true);
useEffect(() => {
const checkAuth = async () => {
// Only check auth in server mode
if (process.env.NEXT_PUBLIC_SERVER_MODE !== 'true') {
setIsChecking(false);
return;
}
try {
const response = await fetch('/api/auth/check');
if (response.status === 401) {
// Not authenticated, redirect to login
router.push('/admin/login');
return;
}
if (!response.ok) {
throw new Error('Auth check failed');
}
// Authenticated
setIsChecking(false);
} catch (error) {
console.error('Auth check error:', error);
router.push('/admin/login');
}
};
checkAuth();
}, [router]);
return { isChecking };
}
|