diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index dbc1dfbf..9d4a1e70 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -12,12 +12,12 @@ export const createCaller = createCallerFactory({ "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"), "bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"), "bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"), + "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), "bilder/[id]": await import("../src/pages/api/bilder/[id].ts"), @@ -26,14 +26,14 @@ export const createCaller = createCallerFactory({ "geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"), "geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"), "objekt": await import("../src/pages/api/objekt/index.ts"), + "rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"), + "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"), - "ticket": await import("../src/pages/api/ticket/index.ts"), - "rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"), - "rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"), - "rechnung": await import("../src/pages/api/rechnung/index.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]/index.ts b/src/pages/api/aufnahme/[id]/index.ts index bd301ec7..49f72673 100644 --- a/src/pages/api/aufnahme/[id]/index.ts +++ b/src/pages/api/aufnahme/[id]/index.ts @@ -20,12 +20,11 @@ export const PATCH = defineApiRoute({ const aufnahme = await prisma.aufnahme.findUnique({ where: { - id, - benutzer_id: user.id + id } }); - if (!aufnahme) { + if (!aufnahme || (aufnahme.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Aufnahme mit dieser UID existiert nicht oder gehört nicht dem aktuellen Benutzer." diff --git a/src/pages/api/bedarfsausweis-gewerbe/[id].ts b/src/pages/api/bedarfsausweis-gewerbe/[id].ts index bab820d7..7c6d879a 100644 --- a/src/pages/api/bedarfsausweis-gewerbe/[id].ts +++ b/src/pages/api/bedarfsausweis-gewerbe/[id].ts @@ -3,7 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js"; import { generatePrefixedId } from "#lib/db.js"; import { exclude } from "#lib/exclude.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { prisma } from "#lib/server/prisma.js"; +import { Enums, prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; import { BedarfsausweisGewerbeSchema } from "src/generated/zod/bedarfsausweisgewerbe.js"; import { z } from "zod"; @@ -31,13 +31,10 @@ export const PATCH = defineApiRoute({ const objekt = await prisma.bedarfsausweisGewerbe.findUnique({ where: { id: ctx.params.id, - benutzer: { - id: user.id - } } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Nachweis konnte nicht gefunden werden oder gehört einem anderen Benutzer." diff --git a/src/pages/api/bedarfsausweis-wohnen/[id].ts b/src/pages/api/bedarfsausweis-wohnen/[id].ts index e4b1d970..346380ab 100644 --- a/src/pages/api/bedarfsausweis-wohnen/[id].ts +++ b/src/pages/api/bedarfsausweis-wohnen/[id].ts @@ -3,7 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js"; import { generatePrefixedId } from "#lib/db.js"; import { exclude } from "#lib/exclude.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { prisma } from "#lib/server/prisma.js"; +import { Enums, prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js"; import { z } from "zod"; @@ -30,14 +30,11 @@ export const PATCH = defineApiRoute({ async fetch(input, ctx, user) { const objekt = await prisma.bedarfsausweisWohnen.findUnique({ where: { - id: ctx.params.id, - benutzer: { - id: user.id - } + id: ctx.params.id } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Ausweis konnte nicht gefunden werden oder gehört einem anderen Benutzer." diff --git a/src/pages/api/geg-nachweis-gewerbe/[id].ts b/src/pages/api/geg-nachweis-gewerbe/[id].ts index 97904b9b..92290c42 100644 --- a/src/pages/api/geg-nachweis-gewerbe/[id].ts +++ b/src/pages/api/geg-nachweis-gewerbe/[id].ts @@ -3,7 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js"; import { generatePrefixedId } from "#lib/db.js"; import { exclude } from "#lib/exclude.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { prisma } from "#lib/server/prisma.js"; +import { Enums, prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; import { GEGNachweisGewerbeSchema } from "src/generated/zod/gegnachweisgewerbe.js"; import { z } from "zod"; @@ -30,14 +30,11 @@ export const PATCH = defineApiRoute({ async fetch(input, ctx, user) { const objekt = await prisma.gEGNachweisGewerbe.findUnique({ where: { - id: ctx.params.id, - benutzer: { - id: user.id - } + id: ctx.params.id } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Nachweis konnte nicht gefunden werden oder gehört einem anderen Benutzer." diff --git a/src/pages/api/geg-nachweis-wohnen/[id].ts b/src/pages/api/geg-nachweis-wohnen/[id].ts index 5a7f2053..64a188e2 100644 --- a/src/pages/api/geg-nachweis-wohnen/[id].ts +++ b/src/pages/api/geg-nachweis-wohnen/[id].ts @@ -3,7 +3,7 @@ import { VALID_UUID_PREFIXES } from "#lib/constants.js"; import { generatePrefixedId } from "#lib/db.js"; import { exclude } from "#lib/exclude.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { prisma } from "#lib/server/prisma.js"; +import { Enums, prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; import { GEGNachweisWohnenSchema } from "src/generated/zod/gegnachweiswohnen.js"; import { z } from "zod"; @@ -30,14 +30,11 @@ export const PATCH = defineApiRoute({ async fetch(input, ctx, user) { const objekt = await prisma.gEGNachweisWohnen.findUnique({ where: { - id: ctx.params.id, - benutzer: { - id: user.id - } + id: ctx.params.id } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Nachweis konnte nicht gefunden werden oder gehört einem anderen Benutzer." diff --git a/src/pages/api/objekt/[id]/index.ts b/src/pages/api/objekt/[id]/index.ts index 0e6ea00a..6013147c 100644 --- a/src/pages/api/objekt/[id]/index.ts +++ b/src/pages/api/objekt/[id]/index.ts @@ -20,14 +20,11 @@ export const PATCH = defineApiRoute({ async fetch(input, ctx, user) { const objekt = await prisma.objekt.findUnique({ where: { - id: ctx.params.id, - benutzer: { - id: user.id - } + id: ctx.params.id } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Objekt konnte nicht gefunden werden." diff --git a/src/pages/api/verbrauchsausweis-gewerbe/[id].ts b/src/pages/api/verbrauchsausweis-gewerbe/[id].ts index ca3fdd54..0469cb94 100644 --- a/src/pages/api/verbrauchsausweis-gewerbe/[id].ts +++ b/src/pages/api/verbrauchsausweis-gewerbe/[id].ts @@ -27,14 +27,11 @@ export const PATCH = defineApiRoute({ async fetch(input, ctx, user) { const objekt = await prisma.verbrauchsausweisGewerbe.findUnique({ where: { - id: ctx.params.id, - benutzer: { - id: user.id - } + id: ctx.params.id } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Ausweis konnte nicht gefunden werden oder gehört einem anderen Benutzer." diff --git a/src/pages/api/verbrauchsausweis-wohnen/[id].ts b/src/pages/api/verbrauchsausweis-wohnen/[id].ts index 98fac976..116cf4b8 100644 --- a/src/pages/api/verbrauchsausweis-wohnen/[id].ts +++ b/src/pages/api/verbrauchsausweis-wohnen/[id].ts @@ -28,14 +28,11 @@ export const PATCH = defineApiRoute({ async fetch(input, ctx, user) { const objekt = await prisma.verbrauchsausweisWohnen.findUnique({ where: { - id: ctx.params.id, - benutzer: { - id: user.id - } + id: ctx.params.id } }) - if (!objekt) { + if (!objekt || (objekt.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) { throw new APIError({ code: "NOT_FOUND", message: "Ausweis konnte nicht gefunden werden oder gehört einem anderen Benutzer."