import { useEffect } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import Cookies from "js-cookie"; import { useUserStore } from "../store/user.store"; import Result from "../components/Result"; interface IGuardProps { children: JSX.Element; } const needAuthList = ["course/detail"]; export const Guard = (props: IGuardProps) => { const navigate = useNavigate(); const user = useUserStore((s: any) => s.user); const fetchUser = useUserStore((s: any) => s.fetchUser); const location = useLocation(); const sign = Cookies.get("_sign_web"); const needAuth = needAuthList.some((p) => location.pathname.indexOf(p) > -1); useEffect(() => { if (!user) fetchUser(); }, [location.pathname]); if (!sign && needAuth) return ; return props.children; };