From 17ebd471e8f8780268de19d974d7fc4403808996 Mon Sep 17 00:00:00 2001 From: lucuswolfius Date: Mon, 2 Jun 2025 10:03:59 -0700 Subject: [PATCH 1/2] hide admin elements in navbar when not permitted --- apps/hub/app/_components/Nav.tsx | 79 +++++++++++++-------- packages/database/prisma/schema/user.prisma | 1 + 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/apps/hub/app/_components/Nav.tsx b/apps/hub/app/_components/Nav.tsx index 13d8c703..d9a3c1cf 100644 --- a/apps/hub/app/_components/Nav.tsx +++ b/apps/hub/app/_components/Nav.tsx @@ -8,8 +8,15 @@ import { } from "@radix-ui/react-icons"; import Link from "next/link"; import { WarningAlert } from "./ui/PageAlert"; +import { getServerSession } from "api/auth/[...nextauth]/auth"; +import { Error } from "./Error"; -export const VerticalNav = () => { +export const VerticalNav = async () => { + const session = await getServerSession(); + if (!session?.user) return ; + const viewAdminMenu = session.user.permissions.some((p) => { + return p.startsWith("ADMIN"); + }); return ( ); }; diff --git a/packages/database/prisma/schema/user.prisma b/packages/database/prisma/schema/user.prisma index 797d316b..70d7df3e 100644 --- a/packages/database/prisma/schema/user.prisma +++ b/packages/database/prisma/schema/user.prisma @@ -14,6 +14,7 @@ enum PERMISSION { AUDIO_ADMIN ADMIN_STATION ADMIN_KEYWORD + ADMIN_MESSAGE AUDIO PILOT DISPO From b98e69518f40254d61531b1d3074b374a5be7170 Mon Sep 17 00:00:00 2001 From: lucuswolfius Date: Mon, 2 Jun 2025 11:05:21 -0700 Subject: [PATCH 2/2] service message table added --- apps/hub/app/(app)/admin/message/page.tsx | 55 ++++++++++++++++++----- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/apps/hub/app/(app)/admin/message/page.tsx b/apps/hub/app/(app)/admin/message/page.tsx index c60c48d4..612dc784 100644 --- a/apps/hub/app/(app)/admin/message/page.tsx +++ b/apps/hub/app/(app)/admin/message/page.tsx @@ -1,19 +1,54 @@ +"use client"; + import { MessageSquareWarning } from "lucide-react"; import { MessageForm } from "./_components/messageForm"; +import { PaginatedTable } from "_components/PaginatedTable"; +import { ColumnDef } from "@tanstack/react-table"; +import { Notam } from "@repo/db"; export default function MessagePage() { return ( -
-
-

- Service Nachrichten -

-
-
-
- + <> +
+
+

+ Service Nachrichten +

+
+
+
+ +
-
+ { + const color = row.getValue("color"); + return color; + }, + }, + { + accessorKey: "createdAt", + header: "Erstellt am", + sortDescFirst: false, + cell: ({ cell }) => { + const date = new Date(cell.getValue() as string); + return date.toLocaleDateString(); + }, + }, + ] as ColumnDef[] + } + /> + ); }