+ );
+}
diff --git a/apps/hub/app/(app)/resources/_components/desktop-client.png b/apps/hub/app/(app)/resources/_components/desktop-client.png
new file mode 100644
index 00000000..7bc1e7db
Binary files /dev/null and b/apps/hub/app/(app)/resources/_components/desktop-client.png differ
diff --git a/apps/hub/app/(app)/resources/page.tsx b/apps/hub/app/(app)/resources/page.tsx
new file mode 100644
index 00000000..e06d4855
--- /dev/null
+++ b/apps/hub/app/(app)/resources/page.tsx
@@ -0,0 +1,18 @@
+import ResourceCard from "(app)/resources/_components/Card";
+import { Download } from "lucide-react";
+import Desktop from "./_components/desktop-client.png";
+
+export default function () {
+ return (
+
+ }
+ btnHref="https://cdn.virtualairrescue.com/desktop/setup.exe"
+ btnLabel="Herunterladen"
+ description="Verwende diesen Client, um dich mit dem VAR-Netzwerk zu verbinden. Wenn du verbindest kannst du einen Push-To-Talk key setzen um den Funk zu bedienen. Wenn du als Pilot fliegen möchtest wird deine Position aus dem Simulator an unser Tracker-System übertragen."
+ />
+
+ );
+}
diff --git a/apps/hub/app/(auth)/passwort-reset/action.ts b/apps/hub/app/(auth)/passwort-reset/action.ts
index 83308f74..2ed3775d 100644
--- a/apps/hub/app/(auth)/passwort-reset/action.ts
+++ b/apps/hub/app/(auth)/passwort-reset/action.ts
@@ -2,25 +2,32 @@
import { prisma } from "@repo/db";
import { sendMailByTemplate } from "../../../helper/mail";
+import OLD_USER from "../../api/auth/[...nextauth]/var.User.json";
import bcrypt from "bcryptjs";
+import { createNewUserFromOld, OldUser } from "../../../types/oldUser";
export const resetPassword = async (email: string) => {
try {
- const user = await prisma.user.findFirst({
+ let user = await prisma.user.findFirst({
where: {
email,
},
});
-
+ const oldUser = (OLD_USER as OldUser[]).find((u) => u.email === email);
if (!user) {
- return { error: "Nutzer nicht gefunden" };
+ if (oldUser) {
+ user = await createNewUserFromOld(oldUser);
+ // If the user is not found in the new database, check the old user data
+ } else {
+ return { error: "Nutzer nicht gefunden" };
+ }
}
const array = new Uint8Array(8);
crypto.getRandomValues(array);
- const password = Array.from(array, (byte) =>
- ("0" + (byte % 36).toString(36)).slice(-1),
- ).join("");
+ const password = Array.from(array, (byte) => ("0" + (byte % 36).toString(36)).slice(-1)).join(
+ "",
+ );
const hashedPassword = await bcrypt.hash(password, 12);
await prisma.user.update({
where: {
diff --git a/apps/hub/app/_components/Nav.tsx b/apps/hub/app/_components/Nav.tsx
index 1fb91c40..4148664a 100644
--- a/apps/hub/app/_components/Nav.tsx
+++ b/apps/hub/app/_components/Nav.tsx
@@ -5,6 +5,7 @@ import {
LockClosedIcon,
RocketIcon,
ReaderIcon,
+ DownloadIcon,
} from "@radix-ui/react-icons";
import Link from "next/link";
import { WarningAlert } from "./ui/PageAlert";
@@ -42,6 +43,12 @@ export const VerticalNav = async () => {
Einstellungen
+