import { useState, useEffect, useCallback } from "react"; import axios from "axios"; import Cookies from "js-cookie"; import { useRouter } from "next/navigation"; const useAuth = () => { const [validated, setValidated] = useState(false); const [loading, setLoading] = useState(true); const [username, setUsername] = useState(""); const [name, setName] = useState(""); const router = useRouter(); const validate = useCallback(async () => { setLoading(true); try { const token = Cookies.get("token"); if (!token) { setLoading(false); setValidated(false); router.push("/"); return; } const response = await axios.post("/api/user/validate", { token }); if (response.data.message === "Valid") { setValidated(true); setUsername(response.data.username); setName(response.data.name); } else { setValidated(false); Cookies.remove("token"); router.push("/"); } } catch (error) { console.error("Validation error:", error); setValidated(false); Cookies.remove("token"); router.push("/"); } finally { setLoading(false); } }, [router]); useEffect(() => { validate(); }, [validate]); return { validated, loading, username, name, validate }; } export default useAuth;