From b1262c42789ee0d75018466f6460d6fddda86142 Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Fri, 6 Jun 2025 11:54:03 -0700 Subject: [PATCH] added footer links, added email alias check --- .../app/_components/map/SearchElements.tsx | 3 -- .../_components/pannel/MissionForm.tsx | 8 +-- .../app/pilot/_components/mrt/useButtons.ts | 20 ++++++-- .../modules/mail-templates/ConfirmEmail.tsx | 6 +-- apps/hub/app/(app)/admin/user/action.ts | 19 +++---- apps/hub/app/(app)/layout.tsx | 20 +++----- .../app/(app)/settings/_components/forms.tsx | 48 +++++++++++++----- .../email-verification/page.tsx | 40 +++++++-------- .../(auth)/register/_components/Register.tsx | 49 ++++++++++--------- apps/hub/app/(auth)/register/action.ts | 17 +++++-- apps/hub/app/layout.tsx | 8 +++ 11 files changed, 141 insertions(+), 97 deletions(-) rename apps/hub/app/{(app)/settings => (auth)}/email-verification/page.tsx (61%) diff --git a/apps/dispatch/app/_components/map/SearchElements.tsx b/apps/dispatch/app/_components/map/SearchElements.tsx index eec7f043..2724965d 100644 --- a/apps/dispatch/app/_components/map/SearchElements.tsx +++ b/apps/dispatch/app/_components/map/SearchElements.tsx @@ -27,15 +27,12 @@ export const SearchElements = () => { useEffect(() => { if (pannelOpen) { const missionEdited = missions?.find((m) => m.id === editingMissionId); - console.log("Mission Edited", missionEdited, editingMissionId, missions); if (missionEdited) { const elements = missionEdited.addressOSMways.map((e) => ({ ...(e as unknown as OSMWay), isSelected: true, })); setSearchElements(elements); - } else { - setSearchElements([]); } } else { const openMissions = openMissionMarker.map((m) => { diff --git a/apps/dispatch/app/dispatch/_components/pannel/MissionForm.tsx b/apps/dispatch/app/dispatch/_components/pannel/MissionForm.tsx index d8779dc1..44bf6bc8 100644 --- a/apps/dispatch/app/dispatch/_components/pannel/MissionForm.tsx +++ b/apps/dispatch/app/dispatch/_components/pannel/MissionForm.tsx @@ -338,12 +338,12 @@ export const MissionForm = () => { {...form.register("hpgMissionString")} onChange={(e) => { form.setValue("hpgMissionString", e.target.value); + const [name] = e.target.value.split(":"); if ( - form.watch("missionAdditionalInfo").length === 0 || - form.watch("missionAdditionalInfo").startsWith("HPG-Szenario:") + !form.watch("missionAdditionalInfo") || + form.watch("missionAdditionalInfo") === name ) { - const [name] = e.target.value.split(":"); - form.setValue("missionAdditionalInfo", `HPG-Szenario: ${name}`); + form.setValue("missionAdditionalInfo", name || ""); } }} className="select select-primary select-bordered w-full mb-2" diff --git a/apps/dispatch/app/pilot/_components/mrt/useButtons.ts b/apps/dispatch/app/pilot/_components/mrt/useButtons.ts index ff5ddc23..bec8a772 100644 --- a/apps/dispatch/app/pilot/_components/mrt/useButtons.ts +++ b/apps/dispatch/app/pilot/_components/mrt/useButtons.ts @@ -1,14 +1,25 @@ -import { ConnectedAircraft } from "@repo/db"; +import { ConnectedAircraft, Prisma } from "@repo/db"; import { usePilotConnectionStore } from "_store/pilot/connectionStore"; import { useMrtStore } from "_store/pilot/MrtStore"; import { pilotSocket } from "pilot/socket"; import { editConnectedAircraftAPI } from "_querys/aircrafts"; import { useEffect } from "react"; +import { useMutation } from "@tanstack/react-query"; export const useButtons = () => { const station = usePilotConnectionStore((state) => state.selectedStation); const connectedAircraft = usePilotConnectionStore((state) => state.connectedAircraft); const connectionStatus = usePilotConnectionStore((state) => state.status); + const updateAircraftMutation = useMutation({ + mutationKey: ["edit-pilot-connected-aircraft"], + mutationFn: ({ + aircraftId, + data, + }: { + aircraftId: number; + data: Prisma.ConnectedAircraftUpdateInput; + }) => editConnectedAircraftAPI(aircraftId, data), + }); const { page, setPage } = useMrtStore((state) => state); @@ -33,8 +44,11 @@ export const useButtons = () => { setPage({ page: "sending-status", station }); setTimeout(async () => { - await editConnectedAircraftAPI(connectedAircraft!.id, { - fmsStatus: button, + await updateAircraftMutation.mutateAsync({ + aircraftId: connectedAircraft.id, + data: { + fmsStatus: button, + }, }); setPage({ page: "home", diff --git a/apps/hub-server/modules/mail-templates/ConfirmEmail.tsx b/apps/hub-server/modules/mail-templates/ConfirmEmail.tsx index c06ac6de..8e95f541 100644 --- a/apps/hub-server/modules/mail-templates/ConfirmEmail.tsx +++ b/apps/hub-server/modules/mail-templates/ConfirmEmail.tsx @@ -129,7 +129,7 @@ const Template = ({ user, code }: { user: User; code: string }) => ( ( margin: 0, }} > - - {process.env.NEXT_PUBLIC_HUB_URL}/settings/email-verification - + {process.env.NEXT_PUBLIC_HUB_URL}/email-verification


und gib dort deinen Code ein. diff --git a/apps/hub/app/(app)/admin/user/action.ts b/apps/hub/app/(app)/admin/user/action.ts index 554c5966..9f2b1323 100644 --- a/apps/hub/app/(app)/admin/user/action.ts +++ b/apps/hub/app/(app)/admin/user/action.ts @@ -51,29 +51,30 @@ export const deletePilotHistory = async (id: number) => { }); }; -export const CheckEmailCode = async (userId: string, code: string) => { - const user = await prisma.user.findUnique({ +export const CheckEmailCode = async (code: string) => { + const users = await prisma.user.findMany({ where: { - id: userId, + emailVerificationToken: code, }, select: { + id: true, emailVerificationToken: true, emailVerificationExpiresAt: true, }, }); - if (!user) { - return { error: "Nutzer nicht gefunden" }; - } - if (user.emailVerificationToken !== code || !user.emailVerificationExpiresAt) { - return { error: "Falscher Code" }; + const user = users[0]; + + if (!user || !user.emailVerificationExpiresAt) { + return { error: "Code ist ungültig" }; } + if (user.emailVerificationExpiresAt < new Date()) { return { error: "Code ist nicht mehr gültig" }; } await prisma.user.update({ where: { - id: userId, + id: user.id, }, data: { emailVerified: true, diff --git a/apps/hub/app/(app)/layout.tsx b/apps/hub/app/(app)/layout.tsx index 15ab80b8..9b059bd5 100644 --- a/apps/hub/app/(app)/layout.tsx +++ b/apps/hub/app/(app)/layout.tsx @@ -1,7 +1,6 @@ import type { Metadata } from "next"; import { DiscordLogoIcon, InstagramLogoIcon, ReaderIcon } from "@radix-ui/react-icons"; import { HorizontalNav, VerticalNav } from "../_components/Nav"; -import { Toaster } from "react-hot-toast"; import { redirect } from "next/navigation"; import { getServerSession } from "../api/auth/[...nextauth]/auth"; import { Error } from "_components/Error"; @@ -20,7 +19,7 @@ export default async function RootLayout({ const session = await getServerSession(); if (session?.user.isBanned) - return ; + return ; if (!session) redirect(`/login`); @@ -32,13 +31,6 @@ export default async function RootLayout({ }} >
-
- -
{/* Card */}
@@ -65,10 +57,10 @@ export default async function RootLayout({