import { redirect } from "next/navigation"
import { getServerSession } from "next-auth/next"
import { authOptions } from "@/lib/auth"
import { UserRole } from "@/types/database"
import { AdminSidebar } from "@/components/admin/sidebar"
import { Flags } from "@/lib/flags"
export default async function AdminLayout({
children,
}: {
children: React.ReactNode
}) {
if (!Flags.ADMIN_ENABLED) {
return (
Admin temporarily unavailable
We’re performing maintenance or addressing an incident. Please try again later.
)
}
// Check authentication and authorization
const session = await getServerSession(authOptions)
if (!session) {
redirect("/auth/signin")
}
// Check if user has admin role
if (session.user.role !== UserRole.SHOP_ADMIN && session.user.role !== UserRole.SUPER_ADMIN) {
redirect("/unauthorized")
}
return (
{/* Sidebar */}
{/* Main content */}
{/* Header */}
Admin Dashboard
Welcome, {session.user.name}
{session.user.image ? (

) : (
{session.user.name.charAt(0).toUpperCase()}
)}
{/* Page content */}
{children}
)
}