From a05c32167e49fc33705774d525a9cebe2adfe25b Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Mon, 4 Aug 2025 20:16:04 -0400 Subject: [PATCH] Benutzer Rolle Fix --- src/astro-typesafe-api-caller.ts | 8 ++++---- src/pages/api/aufnahme/[id]/bilder.ts | 2 +- src/pages/api/aufnahme/[id]/index.ts | 2 +- src/pages/api/bedarfsausweis-gewerbe/[id].ts | 2 +- src/pages/api/bedarfsausweis-gewerbe/index.ts | 2 +- src/pages/api/bedarfsausweis-wohnen/[id].ts | 2 +- src/pages/api/bedarfsausweis-wohnen/index.ts | 2 +- src/pages/api/geg-nachweis-gewerbe/[id].ts | 2 +- src/pages/api/geg-nachweis-gewerbe/index.ts | 2 +- src/pages/api/geg-nachweis-wohnen/[id].ts | 2 +- src/pages/api/geg-nachweis-wohnen/index.ts | 2 +- src/pages/api/objekt/[id]/index.ts | 2 +- .../api/verbrauchsausweis-gewerbe/[id].ts | 4 ++-- .../api/verbrauchsausweis-wohnen/[id].ts | 4 ++-- .../api/verbrauchsausweis-wohnen/index.ts | 2 +- src/pages/dashboard/aufnahme/[id].astro | 2 +- src/pages/dashboard/objekte/[id].astro | 4 ++-- src/pages/dashboard/objekte/index.astro | 19 +++++-------------- src/pages/dashboard/objekte/leer.astro | 15 +++++++++++++++ 19 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 src/pages/dashboard/objekte/leer.astro diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index a440b7ab..988e475b 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -12,11 +12,11 @@ export const createCaller = createCallerFactory({ "admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), - "ausweise": await import("../src/pages/api/ausweise/index.ts"), - "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), + "ausweise": await import("../src/pages/api/ausweise/index.ts"), + "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"), "bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"), "bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"), @@ -31,10 +31,10 @@ export const createCaller = createCallerFactory({ "rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"), "rechnung": await import("../src/pages/api/rechnung/index.ts"), "ticket": await import("../src/pages/api/ticket/index.ts"), - "user": await import("../src/pages/api/user/index.ts"), - "user/self": await import("../src/pages/api/user/self.ts"), "verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"), "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), + "user": await import("../src/pages/api/user/index.ts"), + "user/self": await import("../src/pages/api/user/self.ts"), "verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"), "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"), "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"), diff --git a/src/pages/api/aufnahme/[id]/bilder.ts b/src/pages/api/aufnahme/[id]/bilder.ts index 8cf0d3fa..ed4a8168 100644 --- a/src/pages/api/aufnahme/[id]/bilder.ts +++ b/src/pages/api/aufnahme/[id]/bilder.ts @@ -64,7 +64,7 @@ export const GET = defineApiRoute({ const { id } = ctx.params; const aufnahme = await prisma.aufnahme.findUnique({ - where: user.rolle === Enums.BenutzerRolle.USER ? { + where: user.rolle !== Enums.BenutzerRolle.ADMIN ? { id, benutzer_id: user.id } : { id }, diff --git a/src/pages/api/aufnahme/[id]/index.ts b/src/pages/api/aufnahme/[id]/index.ts index 3f330279..2e15a173 100644 --- a/src/pages/api/aufnahme/[id]/index.ts +++ b/src/pages/api/aufnahme/[id]/index.ts @@ -63,7 +63,7 @@ export const GET = defineApiRoute({ const { id } = context.params; const aufnahme = await prisma.aufnahme.findUnique({ - where: user.rolle === Enums.BenutzerRolle.USER ? { + where: user.rolle !== Enums.BenutzerRolle.ADMIN ? { id, benutzer_id: user.id } : { id }, diff --git a/src/pages/api/bedarfsausweis-gewerbe/[id].ts b/src/pages/api/bedarfsausweis-gewerbe/[id].ts index c2c74657..7015592b 100644 --- a/src/pages/api/bedarfsausweis-gewerbe/[id].ts +++ b/src/pages/api/bedarfsausweis-gewerbe/[id].ts @@ -49,7 +49,7 @@ export const PATCH = defineApiRoute({ data: input }) - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, ctx.params.id as string) } }, diff --git a/src/pages/api/bedarfsausweis-gewerbe/index.ts b/src/pages/api/bedarfsausweis-gewerbe/index.ts index af81a364..52b95ce5 100644 --- a/src/pages/api/bedarfsausweis-gewerbe/index.ts +++ b/src/pages/api/bedarfsausweis-gewerbe/index.ts @@ -66,7 +66,7 @@ export const PUT = defineApiRoute({ } } }); - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, id) } return nachweis.id diff --git a/src/pages/api/bedarfsausweis-wohnen/[id].ts b/src/pages/api/bedarfsausweis-wohnen/[id].ts index 75901097..513c1f2a 100644 --- a/src/pages/api/bedarfsausweis-wohnen/[id].ts +++ b/src/pages/api/bedarfsausweis-wohnen/[id].ts @@ -48,7 +48,7 @@ export const PATCH = defineApiRoute({ }, data: input }) - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, ctx.params.id as string) } }, diff --git a/src/pages/api/bedarfsausweis-wohnen/index.ts b/src/pages/api/bedarfsausweis-wohnen/index.ts index 8fbe1439..ee338cf1 100644 --- a/src/pages/api/bedarfsausweis-wohnen/index.ts +++ b/src/pages/api/bedarfsausweis-wohnen/index.ts @@ -73,7 +73,7 @@ export const PUT = defineApiRoute({ }, }, }); - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, id) } return id; diff --git a/src/pages/api/geg-nachweis-gewerbe/[id].ts b/src/pages/api/geg-nachweis-gewerbe/[id].ts index 1c5419fc..81529d79 100644 --- a/src/pages/api/geg-nachweis-gewerbe/[id].ts +++ b/src/pages/api/geg-nachweis-gewerbe/[id].ts @@ -48,7 +48,7 @@ export const PATCH = defineApiRoute({ }, data: input }) - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, ctx.params.id as string) } }, diff --git a/src/pages/api/geg-nachweis-gewerbe/index.ts b/src/pages/api/geg-nachweis-gewerbe/index.ts index f1e0f2a7..7d2c57cd 100644 --- a/src/pages/api/geg-nachweis-gewerbe/index.ts +++ b/src/pages/api/geg-nachweis-gewerbe/index.ts @@ -83,7 +83,7 @@ export const PUT = defineApiRoute({ }, }, }); - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, id) } return { diff --git a/src/pages/api/geg-nachweis-wohnen/[id].ts b/src/pages/api/geg-nachweis-wohnen/[id].ts index 34b4830a..5c1f3173 100644 --- a/src/pages/api/geg-nachweis-wohnen/[id].ts +++ b/src/pages/api/geg-nachweis-wohnen/[id].ts @@ -48,7 +48,7 @@ export const PATCH = defineApiRoute({ }, data: input }) - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, ctx.params.id as string) } }, diff --git a/src/pages/api/geg-nachweis-wohnen/index.ts b/src/pages/api/geg-nachweis-wohnen/index.ts index b0f8c420..a696a8c0 100644 --- a/src/pages/api/geg-nachweis-wohnen/index.ts +++ b/src/pages/api/geg-nachweis-wohnen/index.ts @@ -83,7 +83,7 @@ export const PUT = defineApiRoute({ }, }, }); - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, id) } return { diff --git a/src/pages/api/objekt/[id]/index.ts b/src/pages/api/objekt/[id]/index.ts index 6013147c..3f6d6c31 100644 --- a/src/pages/api/objekt/[id]/index.ts +++ b/src/pages/api/objekt/[id]/index.ts @@ -66,7 +66,7 @@ export const GET = defineApiRoute({ const { id } = ctx.params; const objekt = await prisma.objekt.findUnique({ - where: user.rolle === Enums.BenutzerRolle.USER ? { + where: user.rolle !== Enums.BenutzerRolle.ADMIN ? { id, benutzer_id: user.id } : { id }, diff --git a/src/pages/api/verbrauchsausweis-gewerbe/[id].ts b/src/pages/api/verbrauchsausweis-gewerbe/[id].ts index 6c6f52ef..9330a9ce 100644 --- a/src/pages/api/verbrauchsausweis-gewerbe/[id].ts +++ b/src/pages/api/verbrauchsausweis-gewerbe/[id].ts @@ -46,7 +46,7 @@ export const PATCH = defineApiRoute({ data: input }) - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, ctx.params.id as string) } }, @@ -173,7 +173,7 @@ export const GET = defineApiRoute({ } const ausweis = await prisma.verbrauchsausweisGewerbe.findUnique({ - where: user.rolle === Enums.BenutzerRolle.USER ? { + where: user.rolle !== Enums.BenutzerRolle.ADMIN ? { id, benutzer_id: user.id } : { id }, diff --git a/src/pages/api/verbrauchsausweis-wohnen/[id].ts b/src/pages/api/verbrauchsausweis-wohnen/[id].ts index b960bf04..fcd313c3 100644 --- a/src/pages/api/verbrauchsausweis-wohnen/[id].ts +++ b/src/pages/api/verbrauchsausweis-wohnen/[id].ts @@ -47,7 +47,7 @@ export const PATCH = defineApiRoute({ data: input }) - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, ctx.params.id as string) } }, @@ -174,7 +174,7 @@ export const GET = defineApiRoute({ } const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({ - where: user.rolle === Enums.BenutzerRolle.USER ? { + where: user.rolle !== Enums.BenutzerRolle.ADMIN ? { id, benutzer_id: user.id } : { id }, diff --git a/src/pages/api/verbrauchsausweis-wohnen/index.ts b/src/pages/api/verbrauchsausweis-wohnen/index.ts index f2708961..f064ec01 100644 --- a/src/pages/api/verbrauchsausweis-wohnen/index.ts +++ b/src/pages/api/verbrauchsausweis-wohnen/index.ts @@ -103,7 +103,7 @@ export const PUT = defineApiRoute({ }, }); - if (user.rolle === Enums.BenutzerRolle.USER) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { await sendAusweisGespeichertMail(user, id); } return { diff --git a/src/pages/dashboard/aufnahme/[id].astro b/src/pages/dashboard/aufnahme/[id].astro index 15600ab6..01526fcb 100644 --- a/src/pages/dashboard/aufnahme/[id].astro +++ b/src/pages/dashboard/aufnahme/[id].astro @@ -28,7 +28,7 @@ if (!user) { const aufnahme = await prisma.aufnahme.findUnique({ - where: user.rolle === Enums.BenutzerRolle.USER ? { + where: user.rolle !== Enums.BenutzerRolle.ADMIN ? { benutzer: { id: user.id }, diff --git a/src/pages/dashboard/objekte/[id].astro b/src/pages/dashboard/objekte/[id].astro index 5c910d3e..ecc37278 100644 --- a/src/pages/dashboard/objekte/[id].astro +++ b/src/pages/dashboard/objekte/[id].astro @@ -15,7 +15,7 @@ if (!user) { const totalPageCount = await prisma.aufnahme.count({ where: - user.rolle === Enums.BenutzerRolle.USER + user.rolle !== Enums.BenutzerRolle.ADMIN ? { benutzer: { id: user.id, @@ -27,7 +27,7 @@ const totalPageCount = await prisma.aufnahme.count({ let ausweis; // Wir fragen den neuesten Ausweis ab // Falls der Nutzer ein Admin ist dann kommt der ganz neueste ansonsten der neueste des eingeloggten Benutzers. -if (user.rolle === Enums.BenutzerRolle.USER) { +if (user.rolle !== Enums.BenutzerRolle.ADMIN) { const adapter = getPrismaAusweisAdapter(id); ausweis = await adapter?.findUnique({ where: { diff --git a/src/pages/dashboard/objekte/index.astro b/src/pages/dashboard/objekte/index.astro index fc96ff3c..713f2576 100644 --- a/src/pages/dashboard/objekte/index.astro +++ b/src/pages/dashboard/objekte/index.astro @@ -2,20 +2,18 @@ import { Enums, prisma } from "#lib/server/prisma"; import UserLayout from "#layouts/DashboardLayout.astro"; import { getCurrentUser } from "#lib/server/user"; -import moment from "moment"; const page = Number(Astro.url.searchParams.get("p")); const user = await getCurrentUser(Astro); - if (!user) { return Astro.redirect("/auth/login"); } const totalPageCount = await prisma.aufnahme.count({ where: - user.rolle === Enums.BenutzerRolle.USER + user.rolle !== Enums.BenutzerRolle.ADMIN || Enums.BenutzerRolle.RESELLER ? { benutzer: { id: user.id, @@ -24,14 +22,16 @@ const totalPageCount = await prisma.aufnahme.count({ : {}, }); -if (page < 1 || page > totalPageCount) { +if ((page < 1 || page > totalPageCount) && totalPageCount > 0) { return Astro.redirect("/dashboard/objekte?p=1"); +} else if (totalPageCount === 0) { + return Astro.redirect("/dashboard/objekte/leer"); } let result: { id: string; updated_at: Date }[] = []; // Wir fragen den neuesten Ausweis ab // Falls der Nutzer ein Admin ist dann kommt der ganz neueste ansonsten der neueste des eingeloggten Benutzers. -if (user.rolle === Enums.BenutzerRolle.USER) { +if (user.rolle !== Enums.BenutzerRolle.ADMIN || user.rolle === Enums.BenutzerRolle.RESELLER) { result = await prisma.$queryRaw`SELECT id, updated_at FROM "VerbrauchsausweisWohnen" WHERE benutzer_id = ${user.id} UNION ALL SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" WHERE benutzer_id = ${user.id} UNION ALL @@ -41,15 +41,6 @@ if (user.rolle === Enums.BenutzerRolle.USER) { SELECT id, updated_at FROM "GEGNachweisGewerbe" WHERE benutzer_id = ${user.id} ORDER BY updated_at DESC LIMIT 1 OFFSET ${page - 1}`; } else { - const date = moment().subtract(2, "hours").toDate() - - // SELECT id, updated_at FROM "VerbrauchsausweisWohnen" WHERE created_at >= ${date} AND bestellt = ${true} UNION ALL - // SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" WHERE created_at >= ${date} AND bestellt = ${true} UNION ALL - // SELECT id, updated_at FROM "BedarfsausweisWohnen" WHERE created_at >= ${date} AND bestellt = ${true} UNION ALL - // SELECT id, updated_at FROM "BedarfsausweisGewerbe" WHERE created_at >= ${date} AND bestellt = ${true} UNION ALL - // SELECT id, updated_at FROM "GEGNachweisWohnen" WHERE created_at >= ${date} AND bestellt = ${true} UNION ALL - // SELECT id, updated_at FROM "GEGNachweisGewerbe" WHERE created_at >= ${date} AND bestellt = ${true} - result = await prisma.$queryRaw`SELECT id, updated_at FROM "VerbrauchsausweisWohnen" WHERE ausgestellt = ${false} AND bestellt = ${true} UNION ALL SELECT id, updated_at FROM "VerbrauchsausweisGewerbe" WHERE ausgestellt = ${false} AND bestellt = ${true} UNION ALL diff --git a/src/pages/dashboard/objekte/leer.astro b/src/pages/dashboard/objekte/leer.astro new file mode 100644 index 00000000..6928ab12 --- /dev/null +++ b/src/pages/dashboard/objekte/leer.astro @@ -0,0 +1,15 @@ +--- +import DashboardLayout from "#layouts/DashboardLayout.astro"; +import { getCurrentUser } from "#lib/server/user"; + +const user = await getCurrentUser(Astro); + +if (!user) { + return Astro.redirect("/auth/login"); +} + +--- + + +

Sie haben bisher keine Ausweise erstellt. Klicken sie hier, um einen neuen Ausweis zu erstellen.

+
\ No newline at end of file