import { headers } from "next/headers" import { redirect } from "next/navigation" import { overview } from "@/constants/routes/myPages" import { serverClient } from "@/lib/trpc/server" import { auth } from "@/auth" import { getLang } from "@/i18n/serverContext" export default async function ProtectedLayout({ children, }: React.PropsWithChildren) { const session = await auth() /** * Fallback to make sure every route nested in the * protected route group is actually protected. */ const h = headers() const redirectTo = encodeURIComponent( h.get("x-url") ?? h.get("x-pathname") ?? overview[getLang()] ) const redirectURL = `/${getLang()}/login?redirectTo=${redirectTo}` if (!session) { console.log(`[layout:protected] no session, redirecting to: ${redirectURL}`) redirect(redirectURL) } const user = await serverClient().user.get() if (!user || "error" in user) { console.log(`[layout:protected] no user, redirecting to: ${redirectURL}`) redirect(redirectURL) } return children }