From 0c5a6963d3fe2d09b2a74d82a1e436aade5f5845 Mon Sep 17 00:00:00 2001 From: Pascal Syma Date: Mon, 15 Sep 2025 15:16:37 +0200 Subject: [PATCH] Prevent submitting answer when no team --- .../hunt/[huntSlug]/[questSlug]/index.vue | 2 +- server/api/quest/[questId]/index.get.ts | 27 +++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/pages/hunt/[huntSlug]/[questSlug]/index.vue b/app/pages/hunt/[huntSlug]/[questSlug]/index.vue index 47bc0e7..4720b3a 100644 --- a/app/pages/hunt/[huntSlug]/[questSlug]/index.vue +++ b/app/pages/hunt/[huntSlug]/[questSlug]/index.vue @@ -247,7 +247,7 @@ async function submit() { diff --git a/server/api/quest/[questId]/index.get.ts b/server/api/quest/[questId]/index.get.ts index 8d3c5d0..30becaa 100644 --- a/server/api/quest/[questId]/index.get.ts +++ b/server/api/quest/[questId]/index.get.ts @@ -43,7 +43,26 @@ export default defineEventHandler(async (event) => { id: true, name_de: true, name_en: true, - revealQuests: true + revealQuests: true, + teams: { + select: { + id: true + }, + where: { + OR: [ + { + ownerId: userId + }, + { + members: { + some: { + memberId: userId + } + } + } + ] + } + } } }, answers: { @@ -104,9 +123,13 @@ export default defineEventHandler(async (event) => { throw createError({ status: 404, statusText: 'Not found!' }); } + const teamId = _quest.hunt.teams[0]?.id ?? null; + // @ts-expect-error undefined to remove from DTO + _quest.hunt.teams = undefined; + const { answers, ...quest } = _quest; const answer = answers.length > 0 ? answers[0] : null; - return { answer, ...quest }; + return { answer, ...quest, teamId }; });