diff --git a/apps/web/src/app/(signing)/sign/[token]/page.tsx b/apps/web/src/app/(signing)/sign/[token]/page.tsx index 3ae09f662..ef4b07c8a 100644 --- a/apps/web/src/app/(signing)/sign/[token]/page.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/page.tsx @@ -10,6 +10,7 @@ import { getCompletedFieldsForToken } from '@documenso/lib/server-only/field/get import { getFieldsForToken } from '@documenso/lib/server-only/field/get-fields-for-token'; import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token'; import { getRecipientSignatures } from '@documenso/lib/server-only/recipient/get-recipient-signatures'; +import { getUserByEmail } from '@documenso/lib/server-only/user/get-user-by-email'; import { symmetricDecrypt } from '@documenso/lib/universal/crypto'; import { extractNextHeaderRequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth'; @@ -70,8 +71,14 @@ export default async function SigningPage({ params: { token } }: SigningPageProp userId: user?.id, }); + let recipientHasAccount: boolean | null = null; + if (!isDocumentAccessValid) { - return ; + recipientHasAccount = await getUserByEmail({ email: recipient?.email }) + .then((user) => !!user) + .catch(() => false); + + return ; } await viewedDocument({ diff --git a/apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx b/apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx index fb19384cd..2d77679df 100644 --- a/apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx @@ -11,9 +11,10 @@ import { useToast } from '@documenso/ui/primitives/use-toast'; export type SigningAuthPageViewProps = { email: string; + emailHasAccount?: boolean; }; -export const SigningAuthPageView = ({ email }: SigningAuthPageViewProps) => { +export const SigningAuthPageView = ({ email, emailHasAccount }: SigningAuthPageViewProps) => { const { toast } = useToast(); const [isSigningOut, setIsSigningOut] = useState(false); @@ -30,7 +31,9 @@ export const SigningAuthPageView = ({ email }: SigningAuthPageViewProps) => { }); await signOut({ - callbackUrl: `/signin?email=${encodeURIComponent(encryptedEmail)}`, + callbackUrl: emailHasAccount + ? `/signin?email=${encodeURIComponent(encryptedEmail)}` + : `/signup?email=${encodeURIComponent(encryptedEmail)}`, }); } catch { toast({ @@ -59,7 +62,7 @@ export const SigningAuthPageView = ({ email }: SigningAuthPageViewProps) => { onClick={async () => handleChangeAccount(email)} loading={isSigningOut} > - Login + {emailHasAccount ? 'Login' : 'Sign up'}