[PR #1970] [CLOSED] feat: expiry links #1965

Closed
opened 2026-02-26 20:31:51 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/documenso/documenso/pull/1970
Author: @ephraimduncan
Created: 8/18/2025
Status: Closed

Base: mainHead: feat/expiry-links


📝 Commits (10+)

📊 Changes

46 files changed (+1765 additions, -7 deletions)

View changed files

📝 apps/remix/app/components/general/document/document-edit-form.tsx (+15 -0)
📝 apps/remix/app/components/general/document/document-page-view-recipients.tsx (+8 -0)
📝 apps/remix/app/components/general/stack-avatar.tsx (+3 -0)
📝 apps/remix/app/components/general/stack-avatars-with-tooltip.tsx (+32 -1)
📝 apps/remix/app/components/tables/documents-table-action-button.tsx (+9 -1)
📝 apps/remix/app/components/tables/inbox-table.tsx (+9 -1)
📝 apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx (+16 -0)
apps/remix/app/routes/_recipient+/sign.$token+/expired.tsx (+141 -0)
📝 packages/lib/client-only/hooks/use-element-scale-size.ts (+1 -1)
📝 packages/lib/client-only/recipient-type.ts (+9 -0)
📝 packages/lib/server-only/admin/get-recipients-stats.ts (+1 -0)
📝 packages/lib/server-only/document-meta/upsert-document-meta.ts (+26 -0)
packages/lib/server-only/document/create-document-v2.ts (+292 -0)
packages/lib/server-only/document/create-document.ts (+177 -0)
📝 packages/lib/server-only/document/resend-document.ts (+34 -0)
📝 packages/lib/server-only/document/send-document.ts (+19 -0)
📝 packages/lib/server-only/field/sign-field-with-token.ts (+7 -0)
packages/lib/server-only/recipient/expire-recipient.ts (+36 -0)
📝 packages/lib/server-only/template/create-document-from-template.ts (+14 -0)
📝 packages/lib/translations/de/web.po (+52 -0)

...and 26 more files

📄 Description

Description

This PR implements expiring signing links functionality that allows document senders to set time limits on how long signing links remain valid. After expiry, recipients can no longer sign documents via the expired links.

Changes Made

  • Document creators can now set time limits on how long recipients have to sign documents
  • Dedicated page shown to users when they try to access an expired signing link
  • Templates can include default expiry settings that apply to all documents created from them
  • Resending a document to a recipient updates their expiry with a fresh duration

Testing Performed

  • Creating documents with various expiry durations
  • Verifying expired links properly redirect to the expiry page
  • Testing that resending documents refreshes expiry dates
  • Confirming templates propagate expiry settings to new documents
  • Validating API endpoints accept and process expiry parameters
  • Ensuring the feature doesn't impact existing documents without expiry

Checklist

  • I have tested these changes locally and they work as expected.
  • I have added/updated tests that prove the effectiveness of these changes.
  • I have updated the documentation to reflect these changes, if applicable.
  • I have followed the project's coding style guidelines.
  • I have addressed the code review feedback from the previous submission, if applicable.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/documenso/documenso/pull/1970 **Author:** [@ephraimduncan](https://github.com/ephraimduncan) **Created:** 8/18/2025 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/expiry-links` --- ### 📝 Commits (10+) - [`e24d00e`](https://github.com/documenso/documenso/commit/e24d00e23eb2bfa9834d074e1e74d0c6ad9ce52a) feat: expiry links - [`262d9ef`](https://github.com/documenso/documenso/commit/262d9efdd5624477d7297cbd0f100da9cf06e987) Merge branch 'main' into feat/expiry-links - [`d6bc4bd`](https://github.com/documenso/documenso/commit/d6bc4bd0baa13af399ac60db0f04f27d33fc3733) chore: review - [`b1102c8`](https://github.com/documenso/documenso/commit/b1102c8ba4811bf80b3ea4c25e42c8e8f80cbef2) fix: merge conflicts - [`e9f4d00`](https://github.com/documenso/documenso/commit/e9f4d0065eb2e6456ff265a622051dd1f63f0a8b) Merge branch 'main' into feat/expiry-links - [`40d7527`](https://github.com/documenso/documenso/commit/40d7527036ba92744b45ee8f1e563917a7f6c2be) Merge branch 'main' into feat/expiry-links - [`eb5be38`](https://github.com/documenso/documenso/commit/eb5be386ce33b5a2b9468adfe53490d35778361e) fix: merge conflicts - [`53ee434`](https://github.com/documenso/documenso/commit/53ee4342c71bfa2346a08b6df9ff318b45b42784) fix: build errors - [`0942a92`](https://github.com/documenso/documenso/commit/0942a9234de2f250b15d9e40b009269500f74ce9) fix: build errors - [`bdd4e5a`](https://github.com/documenso/documenso/commit/bdd4e5ae2efae1c43c86f54bc1934056f0b727f0) fix: merge conflicts ### 📊 Changes **46 files changed** (+1765 additions, -7 deletions) <details> <summary>View changed files</summary> 📝 `apps/remix/app/components/general/document/document-edit-form.tsx` (+15 -0) 📝 `apps/remix/app/components/general/document/document-page-view-recipients.tsx` (+8 -0) 📝 `apps/remix/app/components/general/stack-avatar.tsx` (+3 -0) 📝 `apps/remix/app/components/general/stack-avatars-with-tooltip.tsx` (+32 -1) 📝 `apps/remix/app/components/tables/documents-table-action-button.tsx` (+9 -1) 📝 `apps/remix/app/components/tables/inbox-table.tsx` (+9 -1) 📝 `apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx` (+16 -0) ➕ `apps/remix/app/routes/_recipient+/sign.$token+/expired.tsx` (+141 -0) 📝 `packages/lib/client-only/hooks/use-element-scale-size.ts` (+1 -1) 📝 `packages/lib/client-only/recipient-type.ts` (+9 -0) 📝 `packages/lib/server-only/admin/get-recipients-stats.ts` (+1 -0) 📝 `packages/lib/server-only/document-meta/upsert-document-meta.ts` (+26 -0) ➕ `packages/lib/server-only/document/create-document-v2.ts` (+292 -0) ➕ `packages/lib/server-only/document/create-document.ts` (+177 -0) 📝 `packages/lib/server-only/document/resend-document.ts` (+34 -0) 📝 `packages/lib/server-only/document/send-document.ts` (+19 -0) 📝 `packages/lib/server-only/field/sign-field-with-token.ts` (+7 -0) ➕ `packages/lib/server-only/recipient/expire-recipient.ts` (+36 -0) 📝 `packages/lib/server-only/template/create-document-from-template.ts` (+14 -0) 📝 `packages/lib/translations/de/web.po` (+52 -0) _...and 26 more files_ </details> ### 📄 Description ## Description This PR implements expiring signing links functionality that allows document senders to set time limits on how long signing links remain valid. After expiry, recipients can no longer sign documents via the expired links. ## Changes Made - Document creators can now set time limits on how long recipients have to sign documents - Dedicated page shown to users when they try to access an expired signing link - Templates can include default expiry settings that apply to all documents created from them - Resending a document to a recipient updates their expiry with a fresh duration ## Testing Performed - Creating documents with various expiry durations - Verifying expired links properly redirect to the expiry page - Testing that resending documents refreshes expiry dates - Confirming templates propagate expiry settings to new documents - Validating API endpoints accept and process expiry parameters - Ensuring the feature doesn't impact existing documents without expiry ## Checklist <!--- Please check the boxes that apply to this pull request. --> <!--- You can add or remove items as needed. --> - [x] I have tested these changes locally and they work as expected. - [ ] I have added/updated tests that prove the effectiveness of these changes. - [ ] I have updated the documentation to reflect these changes, if applicable. - [x] I have followed the project's coding style guidelines. - [ ] I have addressed the code review feedback from the previous submission, if applicable. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-02-26 20:31:51 +03:00
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
starred/documenso#1965
No description provided.