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[]
+ }
+ />
+ >
);
}
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 (
-
@@ -35,34 +42,48 @@ export const VerticalNav = () => {
Einstellungen
- -
-
-
-
- Admin
-
-
- -
- Benutzer
-
- -
- Stationen
-
- -
- Stichworte
-
- -
- Events
-
- -
- Service Nachrichten
-
- -
- Reports
-
-
-
-
+ {viewAdminMenu && (
+ -
+
+
+
+ Admin
+
+
+ {session.user.permissions.includes("ADMIN_USER") && (
+ -
+ Benutzer
+
+ )}
+ {session.user.permissions.includes("ADMIN_STATION") && (
+ -
+ Stationen
+
+ )}
+ {session.user.permissions.includes("ADMIN_KEYWORD") && (
+ -
+ Stichworte
+
+ )}
+ {session.user.permissions.includes("ADMIN_EVENT") && (
+ -
+ Events
+
+ )}
+ {session.user.permissions.includes("ADMIN_MESSAGE") && (
+ -
+ Service Nachrichten
+
+ )}
+ {session.user.permissions.includes("ADMIN_USER") && (
+ -
+ Reports
+
+ )}
+
+
+
+ )}
);
};
diff --git a/packages/database/prisma/schema/user.prisma b/packages/database/prisma/schema/user.prisma
index 422801ce..5b3549a6 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