diff --git a/apps/web/pages/api/documents/[id].ts b/apps/web/pages/api/documents/[id].ts index 48284a6f4..d969ec348 100644 --- a/apps/web/pages/api/documents/[id].ts +++ b/apps/web/pages/api/documents/[id].ts @@ -48,8 +48,7 @@ async function getHandler(req: NextApiRequest, res: NextApiResponse) { `attachment; filename=${document.title}` ); - res.status(200).send(buffer); - return; + return res.status(200).send(buffer); } async function deleteHandler(req: NextApiRequest, res: NextApiResponse) { diff --git a/apps/web/pages/api/health.ts b/apps/web/pages/api/health.ts index 1e8db5c37..16432b87d 100644 --- a/apps/web/pages/api/health.ts +++ b/apps/web/pages/api/health.ts @@ -3,15 +3,12 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { defaultHandler, defaultResponder } from "@documenso/lib/server"; import prisma from "@documenso/prisma"; -type responseData = { - status: string; -}; - // Return a healthy 200 status code for uptime monitoring and render.com zero-downtime-deploy async function getHandler(req: NextApiRequest, res: NextApiResponse) { - // A generic database access to make sure the service is healthy. + // Some generic database access to make sure the service is healthy. const users = await prisma.user.findFirst(); - res.status(200).json({ message: "Api up and running :)" }); + + return res.status(200).json({ message: "Api up and running :)" }); } export default defaultHandler({ diff --git a/apps/web/pages/api/test-sign/[id].ts b/apps/web/pages/api/test-sign/[id].ts index 7c38f1a24..ed3aab2b1 100644 --- a/apps/web/pages/api/test-sign/[id].ts +++ b/apps/web/pages/api/test-sign/[id].ts @@ -12,19 +12,15 @@ import { addDigitalSignature } from "@documenso/signing/addDigitalSignature"; async function getHandler(req: NextApiRequest, res: NextApiResponse) { const documentId = req.query.id || 1; const document: PrismaDocument = await getDocument(+documentId, req, res); - const signedDocumentAsBase64 = await addDigitalSignature( - document.document.toString() - ); - const buffer: Buffer = Buffer.from(signedDocumentAsBase64, "base64"); + const signedDocument = await addDigitalSignature(document.document); res.setHeader("Content-Type", "application/pdf"); + res.setHeader("Content-Length", signedDocument.length); res.setHeader( "Content-Disposition", `attachment; filename=${document.title}` ); - res.setHeader("Content-Length", buffer.length); - res.status(200).send(buffer); - return; + return res.status(200).send(signedDocument); } export default defaultHandler({ diff --git a/packages/signing/addDigitalSignature.ts b/packages/signing/addDigitalSignature.ts index e37401202..e41e1e180 100644 --- a/packages/signing/addDigitalSignature.ts +++ b/packages/signing/addDigitalSignature.ts @@ -10,16 +10,11 @@ import { export const addDigitalSignature = async ( documentAsBase64: string -): Promise => { +): Promise => { // Custom code to add Byterange to PDF const PDFArrayCustom = require("./PDFArrayCustom"); - - // The PDF we're going to sign const pdfBuffer = Buffer.from(documentAsBase64, "base64"); - - // The p12 certificate we're going to sign with const p12Buffer = fs.readFileSync("ressources/certificate.p12"); - const SIGNATURE_LENGTH = 4540; const pdfDoc = await PDFDocument.load(pdfBuffer); @@ -70,11 +65,9 @@ export const addDigitalSignature = async ( const modifiedPdfBuffer = Buffer.from(modifiedPdfBytes); const signObj = new signer.SignPdf(); - const signedPdfBuffer = signObj.sign(modifiedPdfBuffer, p12Buffer, { + const signedPdfBuffer: Buffer = signObj.sign(modifiedPdfBuffer, p12Buffer, { passphrase: "", }); - // Write the signed file - // fs.writeFileSync("./signed.pdf", signedPdfBuffer); - return signedPdfBuffer; + return signedPdfBuffer.toString("base64"); };