DocuSeal-webhook status-rollback: late decline/expired-events draaiden afgeronde deals terug #101

Closed
opened 2026-05-26 18:23:34 +00:00 by jesse-a · 1 comment
Owner

Severity: MEDIUM

In src/app/api/webhooks/docuseal/route.ts overschreven de form.declined/submission.declined en form.expired/submission.expired-handlers de Quote-status onvoorwaardelijk naar REJECTED / EXPIRED, en Contract naar CANCELLED / EXPIRED. Een vertraagd (of replay-attack) event kon dus een al-geaccepteerde offerte of een al-ondertekend contract alsnog naar "afgewezen" draaien — een data-integriteit + audit-trail issue.

Fix: status-rollback-guard toegevoegd:

  • Quote: skip als status === "ACCEPTED"
  • Contract: skip als status === "SIGNED"

In beide gevallen retourneert de webhook { ignored: "already-..." } zonder side effects.

Files: src/app/api/webhooks/docuseal/route.ts

**Severity: MEDIUM** In `src/app/api/webhooks/docuseal/route.ts` overschreven de `form.declined`/`submission.declined` en `form.expired`/`submission.expired`-handlers de Quote-status onvoorwaardelijk naar `REJECTED` / `EXPIRED`, en Contract naar `CANCELLED` / `EXPIRED`. Een vertraagd (of replay-attack) event kon dus een al-geaccepteerde offerte of een al-ondertekend contract alsnog naar "afgewezen" draaien — een data-integriteit + audit-trail issue. **Fix**: status-rollback-guard toegevoegd: - Quote: skip als `status === "ACCEPTED"` - Contract: skip als `status === "SIGNED"` In beide gevallen retourneert de webhook `{ ignored: "already-..." }` zonder side effects. **Files**: src/app/api/webhooks/docuseal/route.ts
Author
Owner

Opgelost in commit 8e18add.

Opgelost in commit 8e18add.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jesse-a/OpenCRM#101
No description provided.