Files
sass-mohfarawati/app/[locale]/(site)/layout.tsx
T
MOH 35734bd2d9
CI / quality (push) Has been cancelled
Remove admin entrypoints from public site
2026-03-13 17:53:01 +01:00

49 lines
1.5 KiB
TypeScript

import type { ReactNode } from "react";
import { unstable_noStore as noStore } from "next/cache";
import { redirect } from "next/navigation";
import { SiteAmbientBackdrop } from "@/components/layout/site-ambient-backdrop";
import { SiteFooter } from "@/components/layout/site-footer";
import { SiteHeader } from "@/components/layout/site-header";
import { isAdminAuthenticated } from "@/lib/admin-auth";
import { getMaintenanceMode, getSiteSettingsMediaBindings } from "@/lib/app-config";
import { getLocalizedPath, resolveLocale } from "@/lib/locale";
type SiteLayoutProps = {
children: ReactNode;
params: Promise<{
locale: string;
}>;
};
export const dynamic = "force-dynamic";
export const revalidate = 0;
export default async function SiteLayout({ children, params }: SiteLayoutProps) {
noStore();
const { locale } = await params;
const localeKey = resolveLocale(locale);
const [maintenanceEnabled, mediaBindings] = await Promise.all([
getMaintenanceMode(),
getSiteSettingsMediaBindings(),
]);
const authenticated = await isAdminAuthenticated();
if (maintenanceEnabled && !authenticated) {
redirect(getLocalizedPath(localeKey, "/coming-soon"));
}
return (
<div className="relative flex min-h-screen flex-col overflow-hidden">
<SiteAmbientBackdrop />
<SiteHeader
lightLogoUrl={mediaBindings.siteLogoLight?.url}
darkLogoUrl={mediaBindings.siteLogoDark?.url}
/>
<main className="flex-1">{children}</main>
<SiteFooter />
</div>
);
}