diff --git a/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx b/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx index bd4fa41a..6ed6d9b7 100644 --- a/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx +++ b/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx @@ -14,7 +14,13 @@ import { } from "@repo/db"; import { useRef, useState } from "react"; import { useForm } from "react-hook-form"; -import { deleteDispoHistory, deletePilotHistory, editUser, resetPassword } from "../../action"; +import { + deleteDispoHistory, + deletePilotHistory, + deleteUser, + editUser, + resetPassword, +} from "../../action"; import { toast } from "react-hot-toast"; import { PersonIcon, @@ -41,6 +47,7 @@ import { PlaneIcon, RedoDot, Timer, + Trash2, X, } from "lucide-react"; import Link from "next/link"; @@ -475,6 +482,7 @@ export const AdminForm = ({ discordAccount, }: AdminFormProps) => { const router = useRouter(); + const { data: session } = useSession(); return (
@@ -502,6 +510,22 @@ export const AdminForm = ({ > Passwort zurücksetzen + {session?.user.permissions.includes("ADMIN_USER_ADVANCED") && ( +
+ +
+ )} {user.isBanned && ( +
+ )} + + ); +}; + export const PasswordForm = (): React.JSX.Element => { const schema = z.object({ password: z.string().min(2).max(30), diff --git a/apps/hub/app/(app)/settings/page.tsx b/apps/hub/app/(app)/settings/page.tsx index 5d655a36..462e96a5 100644 --- a/apps/hub/app/(app)/settings/page.tsx +++ b/apps/hub/app/(app)/settings/page.tsx @@ -1,20 +1,44 @@ import { prisma } from "@repo/db"; import { getServerSession } from "../../api/auth/[...nextauth]/auth"; -import { ProfileForm, SocialForm, PasswordForm, PilotForm } from "./_components/forms"; +import { ProfileForm, SocialForm, PasswordForm, PilotForm, DeleteForm } from "./_components/forms"; import { GearIcon } from "@radix-ui/react-icons"; +import { Error } from "_components/Error"; export default async function Page() { const session = await getServerSession(); - if (!session) return null; + if (!session) + return ; const user = await prisma.user.findFirst({ where: { id: session.user.id, + Penaltys: { + some: { + until: { + gte: new Date(), + }, + suspended: false, + }, + }, }, include: { discordAccounts: true, + Penaltys: true, }, }); - if (!user) return null; + const userPenaltys = await prisma.penalty.findMany({ + where: { + userId: session.user.id, + until: { + gte: new Date(), + }, + type: { + in: ["TIME_BAN", "BAN"], + }, + + suspended: false, + }, + }); + if (!user) return ; const discordAccount = user?.discordAccounts[0]; return (
@@ -24,7 +48,7 @@ export default async function Page() {

- +
@@ -35,6 +59,9 @@ export default async function Page() {
+
+ +
); } diff --git a/apps/hub/app/(auth)/email-verification/page.tsx b/apps/hub/app/(auth)/email-verification/page.tsx index fc2dc825..a478e812 100644 --- a/apps/hub/app/(auth)/email-verification/page.tsx +++ b/apps/hub/app/(auth)/email-verification/page.tsx @@ -1,5 +1,5 @@ "use client"; -import { CheckEmailCode } from "(app)/admin/user/action"; +import { checkEmailCode } from "(app)/admin/user/action"; import { Check } from "lucide-react"; import { useRouter, useSearchParams } from "next/navigation"; import { useCallback, useEffect, useState } from "react"; @@ -15,7 +15,7 @@ export default function Page() { async (code: string) => { console.log("Verifying code:", code); if (!code) return; - const res = await CheckEmailCode(code); + const res = await checkEmailCode(code); console.log("Verification response:", res); if (res.error) { console.log("Verification error:", res.error); diff --git a/packages/database/prisma/schema/user.prisma b/packages/database/prisma/schema/user.prisma index 6ccff52c..9d55a584 100644 --- a/packages/database/prisma/schema/user.prisma +++ b/packages/database/prisma/schema/user.prisma @@ -11,6 +11,7 @@ enum BADGES { enum PERMISSION { ADMIN_EVENT ADMIN_USER + ADMIN_USER_ADVANCED AUDIO_ADMIN ADMIN_STATION ADMIN_KEYWORD @@ -66,7 +67,7 @@ model User { ConnectedDispatcher ConnectedDispatcher[] ConnectedAircraft ConnectedAircraft[] PositionLog PositionLog[] - Penalty Penalty[] + Penaltys Penalty[] CreatedPenalties Penalty[] @relation("CreatedPenalties") @@map(name: "users")