fix: add logging for errors on sign or complete (#3149)

This commit is contained in:
Lucas Smith
2026-08-05 08:12:55 +10:00
committed by GitHub
parent 9c27ce6d18
commit 8bfcec8ee6
2 changed files with 94 additions and 60 deletions
@@ -1,3 +1,4 @@
import { AppError } from '@documenso/lib/errors/app-error';
import { createEnvelopeFields } from '@documenso/lib/server-only/field/create-envelope-fields';
import { deleteDocumentField } from '@documenso/lib/server-only/field/delete-document-field';
import { deleteTemplateField } from '@documenso/lib/server-only/field/delete-template-field';
@@ -613,6 +614,7 @@ export const fieldRouter = router({
* @private
*/
signFieldWithToken: procedure.input(ZSignFieldWithTokenMutationSchema).mutation(async ({ input, ctx }) => {
try {
const { token, fieldId, value, isBase64, authOptions } = input;
ctx.logger.info({
@@ -630,6 +632,16 @@ export const fieldRouter = router({
authOptions,
requestMetadata: ctx.metadata.requestMetadata,
});
} catch (err) {
// Log the error for debugging purposes.
ctx.logger.error({
message: 'Error signing field with token',
error: err instanceof AppError ? `[${err.code}]: ${err.message}` : err,
});
// Rethrow the error so that the client receives the appropriate error response.
throw err;
}
}),
/**
@@ -638,6 +650,7 @@ export const fieldRouter = router({
removeSignedFieldWithToken: procedure
.input(ZRemovedSignedFieldWithTokenMutationSchema)
.mutation(async ({ input, ctx }) => {
try {
const { token, fieldId } = input;
ctx.logger.info({
@@ -651,5 +664,15 @@ export const fieldRouter = router({
fieldId,
requestMetadata: ctx.metadata.requestMetadata,
});
} catch (err) {
// Log the error for debugging purposes.
ctx.logger.error({
message: 'Error removing signed field with token',
error: err instanceof AppError ? `[${err.code}]: ${err.message}` : err,
});
// Rethrow the error so that the client receives the appropriate error response.
throw err;
}
}),
});
@@ -1,4 +1,5 @@
import { prepareCscRecipientSigning } from '@documenso/ee/server-only/signing/csc/prepare-recipient-signing';
import { AppError } from '@documenso/lib/errors/app-error';
import { completeDocumentWithToken } from '@documenso/lib/server-only/document/complete-document-with-token';
import { rejectDocumentWithToken } from '@documenso/lib/server-only/document/reject-document-with-token';
import { createEnvelopeRecipients } from '@documenso/lib/server-only/recipient/create-envelope-recipients';
@@ -11,7 +12,6 @@ import { isTspEnvelope } from '@documenso/lib/types/signature-level';
import { unsafeBuildEnvelopeIdQuery } from '@documenso/lib/utils/envelope';
import { prisma } from '@documenso/prisma';
import { EnvelopeType } from '@prisma/client';
import { ZGenericSuccessResponse, ZSuccessResponseSchema } from '../schema';
import { authenticatedProcedure, procedure, router } from '../trpc';
import { findRecipientSuggestionsRoute } from './find-recipient-suggestions';
@@ -590,6 +590,7 @@ export const recipientRouter = router({
.input(ZCompleteDocumentWithTokenMutationSchema)
.output(ZCompleteDocumentWithTokenResponseSchema)
.mutation(async ({ input, ctx }) => {
try {
const { token, documentId, accessAuthOptions, nextSigner, recipientOverride } = input;
ctx.logger.info({
@@ -631,6 +632,16 @@ export const recipientRouter = router({
});
return { status: 'SIGNED' as const };
} catch (err) {
// Log the error for debugging purposes.
ctx.logger.error({
message: 'Error completing document with token',
error: err instanceof AppError ? `[${err.code}]: ${err.message}` : err,
});
// Rethrow the error so that the client receives the appropriate error response.
throw err;
}
}),
/**