Wartungsmodus funktional #9
This commit is contained in:
@@ -5,6 +5,7 @@ import { NextAuthSessionProvider } from "./_components/AuthSessionProvider";
|
||||
import { getServerSession } from "./api/auth/[...nextauth]/auth";
|
||||
import { Toaster } from "react-hot-toast";
|
||||
import { QueryProvider } from "_components/QueryProvider";
|
||||
import { prisma } from "@repo/db";
|
||||
import { Error as ErrorComp } from "_components/Error";
|
||||
|
||||
const geistSans = localFont({
|
||||
@@ -27,6 +28,22 @@ export default async function RootLayout({
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
const session = await getServerSession();
|
||||
|
||||
const latestNotam = await prisma.notam.findFirst({
|
||||
orderBy: { createdAt: "desc" },
|
||||
});
|
||||
|
||||
let wartungsarbeiten = false;
|
||||
if (
|
||||
latestNotam &&
|
||||
latestNotam.wartungsmodus &&
|
||||
latestNotam.active &&
|
||||
((latestNotam.showUntilActive && new Date(latestNotam.showUntil) > new Date()) ||
|
||||
!latestNotam.showUntilActive)
|
||||
) {
|
||||
wartungsarbeiten = true;
|
||||
}
|
||||
|
||||
return (
|
||||
<html lang="de" data-theme="dark">
|
||||
<body
|
||||
@@ -53,7 +70,20 @@ export default async function RootLayout({
|
||||
{session?.user.isBanned && (
|
||||
<ErrorComp title="You are banned from using this service" statusCode={403} />
|
||||
)}
|
||||
{!session?.user.isBanned && children}
|
||||
{!session?.user.isBanned &&
|
||||
wartungsarbeiten &&
|
||||
!session?.user.permissions.includes("ADMIN_MESSAGE") && (
|
||||
<ErrorComp
|
||||
title={
|
||||
latestNotam?.message ||
|
||||
"Wir führen aktuell Wartungsarbeiten am System durch, versuche es später erneut."
|
||||
}
|
||||
statusCode={503}
|
||||
/>
|
||||
)}
|
||||
{!session?.user.isBanned &&
|
||||
(!wartungsarbeiten || session?.user.permissions.includes("ADMIN_MESSAGE")) &&
|
||||
children}
|
||||
</NextAuthSessionProvider>
|
||||
</QueryProvider>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user