Merge branch 'main' of https://github.com/VAR-Virtual-Air-Rescue/var-monorepo
This commit is contained in:
@@ -1,8 +1,14 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
import { MessageSquareWarning } from "lucide-react";
|
import { MessageSquareWarning } from "lucide-react";
|
||||||
import { MessageForm } from "./_components/messageForm";
|
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() {
|
export default function MessagePage() {
|
||||||
return (
|
return (
|
||||||
|
<>
|
||||||
<div className="grid grid-cols-6 gap-4">
|
<div className="grid grid-cols-6 gap-4">
|
||||||
<div className="col-span-full">
|
<div className="col-span-full">
|
||||||
<p className="text-2xl font-semibold text-left flex items-center gap-2">
|
<p className="text-2xl font-semibold text-left flex items-center gap-2">
|
||||||
@@ -15,5 +21,34 @@ export default function MessagePage() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<PaginatedTable
|
||||||
|
prismaModel="notam"
|
||||||
|
columns={
|
||||||
|
[
|
||||||
|
{
|
||||||
|
accessorKey: "message",
|
||||||
|
header: "Nachricht",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
accessorKey: "color",
|
||||||
|
header: "Status",
|
||||||
|
cell: ({ row }) => {
|
||||||
|
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<Notam>[]
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,15 @@ import {
|
|||||||
} from "@radix-ui/react-icons";
|
} from "@radix-ui/react-icons";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { WarningAlert } from "./ui/PageAlert";
|
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 <Error statusCode={401} title="Benutzer nicht authentifiziert!" />;
|
||||||
|
const viewAdminMenu = session.user.permissions.some((p) => {
|
||||||
|
return p.startsWith("ADMIN");
|
||||||
|
});
|
||||||
return (
|
return (
|
||||||
<ul className="menu w-64 bg-base-300 p-3 rounded-lg shadow-md font-semibold">
|
<ul className="menu w-64 bg-base-300 p-3 rounded-lg shadow-md font-semibold">
|
||||||
<li>
|
<li>
|
||||||
@@ -35,6 +42,7 @@ export const VerticalNav = () => {
|
|||||||
Einstellungen
|
Einstellungen
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
|
{viewAdminMenu && (
|
||||||
<li>
|
<li>
|
||||||
<details open>
|
<details open>
|
||||||
<summary>
|
<summary>
|
||||||
@@ -42,27 +50,40 @@ export const VerticalNav = () => {
|
|||||||
Admin
|
Admin
|
||||||
</summary>
|
</summary>
|
||||||
<ul>
|
<ul>
|
||||||
|
{session.user.permissions.includes("ADMIN_USER") && (
|
||||||
<li>
|
<li>
|
||||||
<Link href="/admin/user">Benutzer</Link>
|
<Link href="/admin/user">Benutzer</Link>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
|
{session.user.permissions.includes("ADMIN_STATION") && (
|
||||||
<li>
|
<li>
|
||||||
<Link href="/admin/station">Stationen</Link>
|
<Link href="/admin/station">Stationen</Link>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
|
{session.user.permissions.includes("ADMIN_KEYWORD") && (
|
||||||
<li>
|
<li>
|
||||||
<Link href="/admin/keyword">Stichworte</Link>
|
<Link href="/admin/keyword">Stichworte</Link>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
|
{session.user.permissions.includes("ADMIN_EVENT") && (
|
||||||
<li>
|
<li>
|
||||||
<Link href="/admin/event">Events</Link>
|
<Link href="/admin/event">Events</Link>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
|
{session.user.permissions.includes("ADMIN_MESSAGE") && (
|
||||||
<li>
|
<li>
|
||||||
<Link href="/admin/message">Service Nachrichten</Link>
|
<Link href="/admin/message">Service Nachrichten</Link>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
|
{session.user.permissions.includes("ADMIN_USER") && (
|
||||||
<li>
|
<li>
|
||||||
<Link href="/admin/report">Reports</Link>
|
<Link href="/admin/report">Reports</Link>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
</details>
|
</details>
|
||||||
</li>
|
</li>
|
||||||
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ enum PERMISSION {
|
|||||||
AUDIO_ADMIN
|
AUDIO_ADMIN
|
||||||
ADMIN_STATION
|
ADMIN_STATION
|
||||||
ADMIN_KEYWORD
|
ADMIN_KEYWORD
|
||||||
|
ADMIN_MESSAGE
|
||||||
AUDIO
|
AUDIO
|
||||||
PILOT
|
PILOT
|
||||||
DISPO
|
DISPO
|
||||||
|
|||||||
Reference in New Issue
Block a user