mirror of
https://github.com/woodchen-ink/Q58Connect.git
synced 2025-07-18 05:51:55 +08:00
refactor: Update auth layout to use client-side session redirection
This commit is contained in:
parent
d1c94e8300
commit
df3ffe0cd5
@ -1,24 +1,27 @@
|
||||
import { redirect } from "next/navigation";
|
||||
"use client";
|
||||
|
||||
import { getCurrentUser } from "@/lib/session";
|
||||
import { useEffect } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useSession } from "next-auth/react";
|
||||
|
||||
export default async function AuthLayout({
|
||||
export default function AuthLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
}) {
|
||||
const user = await getCurrentUser();
|
||||
const { data: session, status } = useSession();
|
||||
const router = useRouter();
|
||||
|
||||
if (user) {
|
||||
if (user.role === "ADMIN") redirect("/admin");
|
||||
redirect("/dashboard");
|
||||
}
|
||||
useEffect(() => {
|
||||
if (status === "authenticated") {
|
||||
if (session?.user?.role === "ADMIN") {
|
||||
router.push("/admin");
|
||||
} else {
|
||||
router.push("/dashboard");
|
||||
}
|
||||
router.refresh();
|
||||
}
|
||||
}, [session, status, router]);
|
||||
|
||||
return (
|
||||
<div className="min-h-screen">
|
||||
<div className="flex h-screen w-screen flex-col items-center justify-center">
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
return <>{children}</>;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user