From 57406b88435f9b448204c709e24428a58e887711 Mon Sep 17 00:00:00 2001 From: Luke Vella Date: Mon, 3 Mar 2025 20:09:11 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Block=20access=20to=20all=20polls?= =?UTF-8?q?=20for=20banned=20user=20(#1606)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/app/[locale]/invite/[urlId]/layout.tsx | 2 +- apps/web/src/app/[locale]/invite/[urlId]/page.tsx | 3 ++- apps/web/src/trpc/client/types.ts | 10 ++++++++-- apps/web/src/trpc/routers/polls.ts | 10 +++++++++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx b/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx index 2d3ca84cd..78beaefd9 100644 --- a/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx +++ b/apps/web/src/app/[locale]/invite/[urlId]/layout.tsx @@ -20,7 +20,7 @@ export default async function Layout({ trpc.polls.comments.list.prefetch({ pollId: params.urlId }), ]); - if (!poll || poll.deleted) { + if (!poll || poll.deleted || poll.user?.banned) { notFound(); } diff --git a/apps/web/src/app/[locale]/invite/[urlId]/page.tsx b/apps/web/src/app/[locale]/invite/[urlId]/page.tsx index 22e77a084..25b05c955 100644 --- a/apps/web/src/app/[locale]/invite/[urlId]/page.tsx +++ b/apps/web/src/app/[locale]/invite/[urlId]/page.tsx @@ -56,6 +56,7 @@ export async function generateMetadata({ user: { select: { name: true, + banned: true, }, }, }, @@ -63,7 +64,7 @@ export async function generateMetadata({ const { t } = await getTranslation(locale); - if (!poll || poll.deleted) { + if (!poll || poll.deleted || poll.user?.banned) { notFound(); } diff --git a/apps/web/src/trpc/client/types.ts b/apps/web/src/trpc/client/types.ts index c52d635a3..b104287f3 100644 --- a/apps/web/src/trpc/client/types.ts +++ b/apps/web/src/trpc/client/types.ts @@ -1,4 +1,4 @@ -import type { PollStatus, User, VoteType } from "@rallly/database"; +import type { PollStatus, VoteType } from "@rallly/database"; export type GetPollApiResponse = { id: string; @@ -6,7 +6,13 @@ export type GetPollApiResponse = { location: string | null; description: string | null; options: { id: string; startTime: Date; duration: number }[]; - user: User | null; + user: { + id: string; + name: string; + email: string | null; + image: string | null; + banned: boolean; + } | null; timeZone: string | null; adminUrlId: string; status: PollStatus; diff --git a/apps/web/src/trpc/routers/polls.ts b/apps/web/src/trpc/routers/polls.ts index 74a0c7b34..d2b3f337b 100644 --- a/apps/web/src/trpc/routers/polls.ts +++ b/apps/web/src/trpc/routers/polls.ts @@ -446,7 +446,15 @@ export const polls = router({ startTime: "asc", }, }, - user: true, + user: { + select: { + id: true, + name: true, + email: true, + image: true, + banned: true, + }, + }, userId: true, guestId: true, deleted: true,