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