feat(15-03): signer-aware GET field filter and updated imports
- Filter signatureFields by tokenRow.signerEmail for multi-signer tokens (D-04) - Legacy null-signerEmail tokens return all isClientVisibleField fields (D-05) - Added imports: createSignerDownloadToken, sendSignerCompletionEmail, DocumentSigner, sql
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
import { headers } from 'next/headers';
|
import { headers } from 'next/headers';
|
||||||
import { NextRequest, NextResponse } from 'next/server';
|
import { NextRequest, NextResponse } from 'next/server';
|
||||||
import { verifySigningToken } from '@/lib/signing/token';
|
import { verifySigningToken, createSignerDownloadToken } from '@/lib/signing/token';
|
||||||
import { logAuditEvent } from '@/lib/signing/audit';
|
import { logAuditEvent } from '@/lib/signing/audit';
|
||||||
import { db } from '@/lib/db';
|
import { db } from '@/lib/db';
|
||||||
import { signingTokens, documents, clients, isClientVisibleField, getFieldType } from '@/lib/db/schema';
|
import { signingTokens, documents, clients, isClientVisibleField, getFieldType, DocumentSigner } from '@/lib/db/schema';
|
||||||
import { eq, isNull, and } from 'drizzle-orm';
|
import { eq, isNull, and, sql } from 'drizzle-orm';
|
||||||
import path from 'node:path';
|
import path from 'node:path';
|
||||||
import { readFile, writeFile, unlink } from 'node:fs/promises';
|
import { readFile, writeFile, unlink } from 'node:fs/promises';
|
||||||
import { PDFDocument, StandardFonts, rgb } from '@cantoo/pdf-lib';
|
import { PDFDocument, StandardFonts, rgb } from '@cantoo/pdf-lib';
|
||||||
import { embedSignatureInPdf } from '@/lib/signing/embed-signature';
|
import { embedSignatureInPdf } from '@/lib/signing/embed-signature';
|
||||||
import { sendAgentNotificationEmail } from '@/lib/signing/signing-mailer';
|
import { sendAgentNotificationEmail, sendSignerCompletionEmail } from '@/lib/signing/signing-mailer';
|
||||||
|
|
||||||
const UPLOADS_DIR = path.join(process.cwd(), 'uploads');
|
const UPLOADS_DIR = path.join(process.cwd(), 'uploads');
|
||||||
|
|
||||||
@@ -87,7 +87,15 @@ export async function GET(
|
|||||||
document: {
|
document: {
|
||||||
id: doc.id,
|
id: doc.id,
|
||||||
name: doc.name,
|
name: doc.name,
|
||||||
signatureFields: (doc.signatureFields ?? []).filter(isClientVisibleField),
|
signatureFields: (doc.signatureFields ?? []).filter((field) => {
|
||||||
|
if (!isClientVisibleField(field)) return false;
|
||||||
|
// D-04: If token has signerEmail, only return this signer's fields
|
||||||
|
if (tokenRow.signerEmail !== null) {
|
||||||
|
return field.signerEmail === tokenRow.signerEmail;
|
||||||
|
}
|
||||||
|
// D-05: Legacy null-signer token — return all client-visible fields
|
||||||
|
return true;
|
||||||
|
}),
|
||||||
preparedFilePath: doc.preparedFilePath,
|
preparedFilePath: doc.preparedFilePath,
|
||||||
},
|
},
|
||||||
expiresAt: new Date(payload.exp * 1000).toISOString(),
|
expiresAt: new Date(payload.exp * 1000).toISOString(),
|
||||||
|
|||||||
Reference in New Issue
Block a user