Untitled
unknown
plain_text
a year ago
1.0 kB
8
Indexable
"use client";
import { useEffect } from "react";
import { useRouter } from "next/navigation";
import NotFound from "@/app/not-found";
import Loading from "@/app/loading";
import { useAuth } from "@/hooks/use-auth";
interface AuthProviderProps {
children: React.ReactNode;
type: "public" | "private";
}
export function AuthProvider({ children, type }: AuthProviderProps) {
const router = useRouter();
const { isSignedIn, isPending } = useAuth();
useEffect(() => {
if (type === "public" && isSignedIn) {
router.replace("/dashboard");
}
}, [isSignedIn, router, type]);
if (isPending) {
return <Loading />;
}
if (isSignedIn === true && type === "private") {
return <>{children}</>;
}
if (isSignedIn === false && type === "public") {
return <>{children}</>;
}
if (isSignedIn === false && type === "private") {
return <NotFound />;
}
// ufeEffect will automatically redirect if isAuthenticated === true && type === public
return null;
}
Editor is loading...
Leave a Comment