Files
lcbp3.np-dms.work/frontend/app/_auth/useAuthGuard.jsx

24 lines
722 B
JavaScript
Executable File

//File: frontend/app/_auth/useAuthGuard.jsx
'use client';
import { useEffect, useState } from 'react';
import { usePathname, useRouter } from 'next/navigation';
import Auth from './AuthDriver';
export default function UseAuthGuard({ children }) {
const [ok, setOk] = useState(false);
const router = useRouter();
const pathname = usePathname();
useEffect(() => {
let alive = true;
(async () => {
const me = await Auth.me().catch(() => ({ ok: false }));
if (alive && me?.ok) setOk(true);
else if (alive) router.replace(`/login?next=${encodeURIComponent(pathname || '/')}`);
})();
return () => { alive = false; };
}, [pathname, router]);
return ok ? <>{children}</> : null;
}