diff --git a/apps/web/pages/documents/[id]/sign.tsx b/apps/web/pages/documents/[id]/sign.tsx index 48b054572..0a62e1f7c 100644 --- a/apps/web/pages/documents/[id]/sign.tsx +++ b/apps/web/pages/documents/[id]/sign.tsx @@ -3,6 +3,10 @@ import Head from "next/head"; import { NextPageWithLayout } from "../../_app"; import { ReadStatus } from "@prisma/client"; import PDFSigner from "../../../components/editor/pdf-signer"; +import Logo from "../../../components/logo"; +import Link from "next/link"; +import { Button } from "@documenso/ui"; +import { CheckBadgeIcon, ClockIcon } from "@heroicons/react/24/outline"; const SignPage: NextPageWithLayout = (props: any) => { return ( @@ -10,7 +14,49 @@ const SignPage: NextPageWithLayout = (props: any) => { Sign | Documenso - + {!props.expired ? ( + + ) : ( + <> +
+ +

+ Time flies. +

+

+ This signing link is expired. +

+

+ Please ask{" "} + {props.document.User.name + ? `${props.document.User.name}` + : `the sender`}{" "} + to resend it. +

+
+
+
+
+ +
+

+ Want to send of your own?{" "} + + Create your own Account + +

+ + )} ); }; @@ -34,7 +80,7 @@ export async function getServerSideProps(context: any) { token: recipientToken, }, include: { - Document: true, + Document: { include: { User: true } }, }, }); @@ -61,8 +107,11 @@ export async function getServerSideProps(context: any) { return { props: { - document: recipient.Document, - fields: unsignedFields, + document: JSON.parse(JSON.stringify(recipient.Document)), + fields: JSON.parse(JSON.stringify(unsignedFields)), + expired: recipient.expired + ? new Date(recipient.expired) < new Date() + : false, }, }; } diff --git a/packages/lib/mail/sendSigningRequest.ts b/packages/lib/mail/sendSigningRequest.ts index d042b9a82..e947149e6 100644 --- a/packages/lib/mail/sendSigningRequest.ts +++ b/packages/lib/mail/sendSigningRequest.ts @@ -23,11 +23,19 @@ export const sendSigningRequest = async ( ).catch((err) => { throw err; }); + + const expiryDate = new Date(); + expiryDate.setDate(expiryDate.getDate() + 60); + await prisma.recipient.update({ where: { id: recipient.id, }, - data: { sendStatus: SendStatus.SENT, readStatus: ReadStatus.NOT_OPENED }, + data: { + sendStatus: SendStatus.SENT, + readStatus: ReadStatus.NOT_OPENED, + expired: expiryDate, + }, }); await prisma.document.update({ diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 82cc64513..1f450eaeb 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -91,6 +91,7 @@ model Recipient { email String @db.VarChar(255) name String @default("") @db.VarChar(255) token String + expired DateTime? readStatus ReadStatus @default(NOT_OPENED) signingStatus SigningStatus @default(NOT_SIGNED) sendStatus SendStatus @default(NOT_SENT)