SPB Git

Repository Public

layout.tsx 1.3 KB 35 lines tsx

1// Auteur : Simon-Pierre Boucher — contact@spboucher.ai2// Coquille du panel /admin — garde serveur (session ka_admin obligatoire),3// navigation latérale encre, badge de non-lus. Tout ce qui est ici est4// invisible sans session : la garde redirige AVANT tout rendu.5import { redirect } from "next/navigation";6import { getAdminSession } from "@/lib/comms/admin-auth";7import { unreadCount } from "@/lib/comms/queries";8import { unreadMailCount } from "@/lib/comms/mail";9import AdminNav from "./AdminNav";1011export const metadata = {12  robots: { index: false, follow: false },13};1415export default async function AdminLayout({16  children,17}: Readonly<{ children: React.ReactNode }>) {18  const session = await getAdminSession();19  if (!session) redirect("/admin/connexion");20  const unread = unreadCount(session);21  const mailUnread = unreadMailCount(session.id, session.roles.includes("super_admin"));22  return (23    <div data-admin-root className="flex min-h-[100dvh] flex-col lg:flex-row">24      <AdminNav25        displayName={session.displayName}26        username={session.username}27        roles={session.roles}28        initialUnread={unread}29        initialMail={mailUnread}30      />31      <main className="min-w-0 flex-1 px-4 py-6 sm:px-8 lg:py-8">{children}</main>32    </div>33  );34}35
Files main
Menu

Theme