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'}