From e089fb2cf77ed5a31ab119f2b8fedfb9406b0793 Mon Sep 17 00:00:00 2001 From: Adrian Bonpin Date: Sat, 16 May 2026 17:13:03 +0800 Subject: [PATCH] feat: add server-side role guard to manage layout (moderator+) --- app/(manage)/layout.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/(manage)/layout.tsx b/app/(manage)/layout.tsx index 2752317..95522d9 100644 --- a/app/(manage)/layout.tsx +++ b/app/(manage)/layout.tsx @@ -1,5 +1,8 @@ import { ManageSidebar } from "@/components/manage/manage-sidebar" +import { auth } from "@/lib/auth" import type { Metadata } from "next" +import { headers } from "next/headers" +import { redirect } from "next/navigation" export const metadata: Metadata = { title: { @@ -14,6 +17,14 @@ export default async function ManageLayout({ }: { children: React.ReactNode }) { + const session = await auth.api.getSession({ + headers: await headers(), + }) + + const role = session?.user?.role ?? "user" + if (role !== "moderator" && role !== "admin") { + redirect("/") + } return (