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 };
});