--- import KundendatenModule from "#modules/KundendatenModule.svelte"; import AusweisLayout from "#layouts/AusweisLayoutPruefung.astro"; import { Enums } from "#lib/client/prisma"; import { getCurrentUser, getOtherUser } from "#lib/server/user"; import { getAusweisartFromId } from "#components/Ausweis/types"; import { getAufnahme, getBedarfsausweisWohnen, getBilder, getObjekt, getRechnung, getUnterlagen, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen } from "#lib/server/db"; import { BenutzerClient } from "#components/Ausweis/types.js"; // Man sollte nur auf diese Seite kommen, wenn ein Ausweis bereits vorliegt und in der Datenbank abgespeichert wurde. const user = await getCurrentUser(Astro) || {} // POST Body const params = new URLSearchParams(await Astro.request.text()); const searchParams = Astro.url.searchParams; let ausweis, aufnahme, objekt, ausweisart, bilder, unterlagen, partner_code, rechnung = null; if (!params.has("ausweis") || !params.has("aufnahme") || !params.has("objekt") || !params.has("bilder") || !params.has("ausweisart")) { // Rechnung und Ausweis als GET parameter if (searchParams.has("a") && searchParams.has("r")) { const id = searchParams.get("id") as string const ausweisart = getAusweisartFromId(id) if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) { ausweis = await getVerbrauchsausweisWohnen(id) } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) { ausweis = await getVerbrauchsausweisGewerbe(id) } else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) { ausweis = await getBedarfsausweisWohnen(id) } if (!ausweis || ausweis.benutzer_id !== user.id) { // Ausweis gehört nicht diesem Benutzer oder existiert nicht return Astro.redirect("/404") } aufnahme = await getAufnahme(ausweis.aufnahme_id) objekt = await getObjekt(aufnahme?.objekt_id) bilder = await getBilder(ausweis.aufnahme_id) unterlagen = await getUnterlagen(ausweis.aufnahme_id) if (ausweis.rechnung_id) { rechnung = await getRechnung(ausweis.rechnung_id) } } else { // Nichts ist vorhanden return Astro.redirect("/404") } } else { try { ausweis = JSON.parse(params.get("ausweis") || "") aufnahme = JSON.parse(params.get("aufnahme") || "") objekt = JSON.parse(params.get("objekt") || "") ausweisart = JSON.parse(params.get("ausweisart") || "") as Enums.Ausweisart; bilder = JSON.parse(params.get("bilder") || ""); unterlagen = JSON.parse(params.get("unterlagen") || "[]") partner_code = params.get("partner_code") || "" if (ausweis.rechnung_id) { rechnung = await getRechnung(ausweis.rechnung_id) } if (!ausweisart || !Object.keys(Enums.Ausweisart).includes(ausweisart)) { throw new Error() } } catch(e){ return Astro.redirect("/404") } } let impersonatedUser: Partial | null = null; if (user){ if (user.id !== ausweis.benutzer_id && ausweis.benutzer_id !== undefined){ impersonatedUser = await getOtherUser(Astro, ausweis.benutzer_id) || {} } } ---