diff --git a/teressa-copeland-homes/src/app/api/documents/[id]/prepare/route.ts b/teressa-copeland-homes/src/app/api/documents/[id]/prepare/route.ts index c0c477c..4b9af1b 100644 --- a/teressa-copeland-homes/src/app/api/documents/[id]/prepare/route.ts +++ b/teressa-copeland-homes/src/app/api/documents/[id]/prepare/route.ts @@ -1,6 +1,6 @@ import { auth } from '@/lib/auth'; import { db } from '@/lib/db'; -import { documents } from '@/lib/db/schema'; +import { documents, users, getFieldType } from '@/lib/db/schema'; import { eq } from 'drizzle-orm'; import { preparePdf } from '@/lib/pdf/prepare-document'; import { logAuditEvent } from '@/lib/signing/audit'; @@ -13,7 +13,7 @@ export async function POST( { params }: { params: Promise<{ id: string }> } ) { const session = await auth(); - if (!session) return new Response('Unauthorized', { status: 401 }); + if (!session?.user?.id) return new Response('Unauthorized', { status: 401 }); const { id } = await params; const body = await req.json() as { @@ -40,7 +40,23 @@ export async function POST( const sigFields = (doc.signatureFields as import('@/lib/db/schema').SignatureFieldData[]) ?? []; const textFields = body.textFillData ?? {}; - await preparePdf(srcPath, destPath, textFields, sigFields); + // Fetch agent's saved signature for embedding at agent-signature field coordinates + const agentUser = await db.query.users.findFirst({ + where: eq(users.id, session.user.id), + columns: { agentSignatureData: true }, + }); + const agentSignatureData = agentUser?.agentSignatureData ?? null; + + // Guard: if document has agent-signature fields but no signature saved, block prepare + const hasAgentSigFields = sigFields.some(f => getFieldType(f) === 'agent-signature'); + if (hasAgentSigFields && !agentSignatureData) { + return Response.json( + { error: 'agent-signature-missing', message: 'No agent signature saved. Go to Profile to save your signature first.' }, + { status: 422 } + ); + } + + await preparePdf(srcPath, destPath, textFields, sigFields, agentSignatureData); const [updated] = await db .update(documents)