From 634dc2afd02d5748a85557545500eb19655b7bf8 Mon Sep 17 00:00:00 2001 From: Ephraim Atta-Duncan Date: Fri, 15 Nov 2024 20:25:09 +0000 Subject: [PATCH] fix: self sign team documents --- .vscode/settings.json | 3 --- .../documents/[id]/edit-document.tsx | 1 + .../document/self-sign-document.ts | 21 ++++++++++++++++--- .../trpc/server/document-router/router.ts | 3 ++- .../trpc/server/document-router/schema.ts | 1 + 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 10b99fdcc..e6ff5d1a0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,8 +17,5 @@ }, "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" } } diff --git a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx index 506a744fb..3a35d779e 100644 --- a/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx +++ b/apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx @@ -313,6 +313,7 @@ export const EditDocumentForm = ({ if (hasSameOwnerAsRecipient) { await selfSignDocument({ documentId: document.id, + teamId: team?.id, }); router.push(`/sign/${recipients[0].token}`); diff --git a/packages/lib/server-only/document/self-sign-document.ts b/packages/lib/server-only/document/self-sign-document.ts index 1926bd9f0..5b0de1c0c 100644 --- a/packages/lib/server-only/document/self-sign-document.ts +++ b/packages/lib/server-only/document/self-sign-document.ts @@ -12,12 +12,14 @@ import { insertFormValuesInPdf } from '../pdf/insert-form-values-in-pdf'; export type SelfSignDocumentOptions = { documentId: number; userId: number; + teamId?: number; requestMetadata?: RequestMetadata; }; export const selfSignDocument = async ({ documentId, userId, + teamId, requestMetadata, }: SelfSignDocumentOptions) => { const user = await prisma.user.findFirstOrThrow({ @@ -31,11 +33,24 @@ export const selfSignDocument = async ({ }, }); - const document = await prisma.document.findFirstOrThrow({ + const document = await prisma.document.findUnique({ where: { id: documentId, - userId, - teamId: null, + ...(teamId + ? { + team: { + id: teamId, + members: { + some: { + userId, + }, + }, + }, + } + : { + userId, + teamId: null, + }), }, include: { Recipient: { diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts index a9247f97d..e080d5d36 100644 --- a/packages/trpc/server/document-router/router.ts +++ b/packages/trpc/server/document-router/router.ts @@ -458,11 +458,12 @@ export const documentRouter = router({ .input(ZSelfSignDocumentMutationSchema) .mutation(async ({ input, ctx }) => { try { - const { documentId } = input; + const { documentId, teamId } = input; return await selfSignDocument({ userId: ctx.user.id, documentId, + teamId, requestMetadata: extractNextApiRequestMetadata(ctx.req), }); } catch (err) { diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts index 39ef8418b..0e1e93abb 100644 --- a/packages/trpc/server/document-router/schema.ts +++ b/packages/trpc/server/document-router/schema.ts @@ -172,6 +172,7 @@ export const ZSendDocumentMutationSchema = z.object({ export const ZSelfSignDocumentMutationSchema = z.object({ documentId: z.number(), + teamId: z.number().optional(), }); export const ZSetPasswordForDocumentMutationSchema = z.object({