Compare commits

...

3 Commits

Author SHA1 Message Date
3da344fc5f v1.7.1-rc.3 2024-09-19 13:55:35 +10:00
404ca3202f chore: update action auth 2024-09-19 13:45:39 +10:00
c043fa9c06 fix: add check for invalid locales (#1353)
## Description

Currently invalid or missing `accept-language` headers will cause issues
rendering Plural components since we do not validate them.

This adds a check to try filter out invalid locales.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced locale filtering process to ensure only valid locales are
processed.
  
- **Bug Fixes**
- Improved data integrity by preventing invalid locales from affecting
application functionality.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-09-19 09:58:59 +10:00
14 changed files with 151 additions and 165 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@documenso/marketing",
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"private": true,
"license": "AGPL-3.0",
"scripts": {

View File

@ -1,6 +1,6 @@
{
"name": "@documenso/web",
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"private": true,
"license": "AGPL-3.0",
"scripts": {

View File

@ -1,11 +1,11 @@
import { useState } from 'react';
import { useRouter } from 'next/navigation';
import { Trans } from '@lingui/macro';
import { DateTime } from 'luxon';
import { signOut } from 'next-auth/react';
import { RecipientRole } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
import { Alert, AlertDescription } from '@documenso/ui/primitives/alert';
import { Button } from '@documenso/ui/primitives/button';
import { DialogFooter } from '@documenso/ui/primitives/dialog';
@ -25,22 +25,19 @@ export const DocumentActionAuthAccount = ({
}: DocumentActionAuthAccountProps) => {
const { recipient } = useRequiredDocumentAuthContext();
const [isSigningOut, setIsSigningOut] = useState(false);
const router = useRouter();
const { mutateAsync: encryptSecondaryData } = trpc.crypto.encryptSecondaryData.useMutation();
const [isSigningOut, setIsSigningOut] = useState(false);
const handleChangeAccount = async (email: string) => {
try {
setIsSigningOut(true);
const encryptedEmail = await encryptSecondaryData({
data: email,
expiresAt: DateTime.now().plus({ days: 1 }).toMillis(),
await signOut({
redirect: false,
});
await signOut({
callbackUrl: `/signin?email=${encodeURIComponent(encryptedEmail)}`,
});
router.push(`/signin#email=${email}`);
} catch {
setIsSigningOut(false);

View File

@ -2,12 +2,12 @@
import { useState } from 'react';
import { useRouter } from 'next/navigation';
import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { DateTime } from 'luxon';
import { signOut } from 'next-auth/react';
import { trpc } from '@documenso/trpc/react';
import { Button } from '@documenso/ui/primitives/button';
import { useToast } from '@documenso/ui/primitives/use-toast';
@ -20,24 +20,19 @@ export const SigningAuthPageView = ({ email, emailHasAccount }: SigningAuthPageV
const { _ } = useLingui();
const { toast } = useToast();
const [isSigningOut, setIsSigningOut] = useState(false);
const router = useRouter();
const { mutateAsync: encryptSecondaryData } = trpc.crypto.encryptSecondaryData.useMutation();
const [isSigningOut, setIsSigningOut] = useState(false);
const handleChangeAccount = async (email: string) => {
try {
setIsSigningOut(true);
const encryptedEmail = await encryptSecondaryData({
data: email,
expiresAt: DateTime.now().plus({ days: 1 }).toMillis(),
await signOut({
redirect: false,
});
await signOut({
callbackUrl: emailHasAccount
? `/signin?email=${encodeURIComponent(encryptedEmail)}`
: `/signup?email=${encodeURIComponent(encryptedEmail)}`,
});
router.push(emailHasAccount ? `/signin#email=${email}` : `/signup#email=${email}`);
} catch {
toast({
title: _(msg`Something went wrong`),

View File

@ -1,6 +1,5 @@
import type { Metadata } from 'next';
import Link from 'next/link';
import { redirect } from 'next/navigation';
import { Trans } from '@lingui/macro';
import { env } from 'next-runtime-env';
@ -11,7 +10,6 @@ import {
IS_OIDC_SSO_ENABLED,
OIDC_PROVIDER_LABEL,
} from '@documenso/lib/constants/auth';
import { decryptSecondaryData } from '@documenso/lib/server-only/crypto/decrypt';
import { SignInForm } from '~/components/forms/signin';
@ -19,24 +17,11 @@ export const metadata: Metadata = {
title: 'Sign In',
};
type SignInPageProps = {
searchParams: {
email?: string;
};
};
export default function SignInPage({ searchParams }: SignInPageProps) {
export default function SignInPage() {
setupI18nSSR();
const NEXT_PUBLIC_DISABLE_SIGNUP = env('NEXT_PUBLIC_DISABLE_SIGNUP');
const rawEmail = typeof searchParams.email === 'string' ? searchParams.email : undefined;
const email = rawEmail ? decryptSecondaryData(rawEmail) : null;
if (!email && rawEmail) {
redirect('/signin');
}
return (
<div className="w-screen max-w-lg px-4">
<div className="border-border dark:bg-background z-10 rounded-xl border bg-neutral-100 p-6">
@ -50,7 +35,6 @@ export default function SignInPage({ searchParams }: SignInPageProps) {
<hr className="-mx-6 my-4" />
<SignInForm
initialEmail={email || undefined}
isGoogleSSOEnabled={IS_GOOGLE_SSO_ENABLED}
isOIDCSSOEnabled={IS_OIDC_SSO_ENABLED}
oidcProviderLabel={OIDC_PROVIDER_LABEL}

View File

@ -5,7 +5,6 @@ import { env } from 'next-runtime-env';
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
import { IS_GOOGLE_SSO_ENABLED, IS_OIDC_SSO_ENABLED } from '@documenso/lib/constants/auth';
import { decryptSecondaryData } from '@documenso/lib/server-only/crypto/decrypt';
import { SignUpFormV2 } from '~/components/forms/v2/signup';
@ -13,13 +12,7 @@ export const metadata: Metadata = {
title: 'Sign Up',
};
type SignUpPageProps = {
searchParams: {
email?: string;
};
};
export default function SignUpPage({ searchParams }: SignUpPageProps) {
export default function SignUpPage() {
setupI18nSSR();
const NEXT_PUBLIC_DISABLE_SIGNUP = env('NEXT_PUBLIC_DISABLE_SIGNUP');
@ -28,17 +21,9 @@ export default function SignUpPage({ searchParams }: SignUpPageProps) {
redirect('/signin');
}
const rawEmail = typeof searchParams.email === 'string' ? searchParams.email : undefined;
const email = rawEmail ? decryptSecondaryData(rawEmail) : null;
if (!email && rawEmail) {
redirect('/signup');
}
return (
<SignUpFormV2
className="w-screen max-w-screen-2xl px-4 md:px-16 lg:-my-16"
initialEmail={email || undefined}
isGoogleSSOEnabled={IS_GOOGLE_SSO_ENABLED}
isOIDCSSOEnabled={IS_OIDC_SSO_ENABLED}
/>

View File

@ -1,6 +1,6 @@
'use client';
import { useMemo, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import Link from 'next/link';
import { useRouter } from 'next/navigation';
@ -307,6 +307,18 @@ export const SignInForm = ({
}
};
useEffect(() => {
const hash = window.location.hash.slice(1);
const params = new URLSearchParams(hash);
const email = params.get('email');
if (email) {
form.setValue('email', email);
}
}, [form]);
return (
<Form {...form}>
<form

View File

@ -1,6 +1,6 @@
'use client';
import { useState } from 'react';
import { useEffect, useState } from 'react';
import Image from 'next/image';
import Link from 'next/link';
@ -203,6 +203,18 @@ export const SignUpFormV2 = ({
}
};
useEffect(() => {
const hash = window.location.hash.slice(1);
const params = new URLSearchParams(hash);
const email = params.get('email');
if (email) {
form.setValue('email', email);
}
}, [form]);
return (
<div className={cn('flex justify-center gap-x-12', className)}>
<div className="border-border relative hidden flex-1 overflow-hidden rounded-xl border xl:flex">

8
package-lock.json generated
View File

@ -1,12 +1,12 @@
{
"name": "@documenso/root",
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"workspaces": [
"apps/*",
"packages/*"
@ -80,7 +80,7 @@
},
"apps/marketing": {
"name": "@documenso/marketing",
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/assets": "*",
@ -424,7 +424,7 @@
},
"apps/web": {
"name": "@documenso/web",
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/api": "*",

View File

@ -1,6 +1,6 @@
{
"private": true,
"version": "1.7.1-rc.2",
"version": "1.7.1-rc.3",
"scripts": {
"build": "turbo run build",
"build:web": "turbo run build --filter=@documenso/web",

View File

@ -339,7 +339,7 @@ msgstr "Alle Zeiten"
msgid "Allows authenticating using biometrics, password managers, hardware keys, etc."
msgstr "Erlaubt die Authentifizierung mit biometrischen Daten, Passwort-Managern, Hardware-Schlüsseln usw."
#: apps/web/src/components/forms/v2/signup.tsx:411
#: apps/web/src/components/forms/v2/signup.tsx:423
msgid "Already have an account? <0>Sign in instead</0>"
msgstr "Hast du bereits ein Konto? <0>Stattdessen anmelden</0>"
@ -578,7 +578,7 @@ msgid "Audit Log"
msgstr "Audit-Protokoll"
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:57
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
msgid "Authentication required"
msgstr "Authentifizierung erforderlich"
@ -596,7 +596,7 @@ msgstr "Warte auf E-Mail-Bestätigung"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:369
#: apps/web/src/components/(dashboard)/settings/layout/activity-back.tsx:20
#: apps/web/src/components/forms/v2/signup.tsx:497
#: apps/web/src/components/forms/v2/signup.tsx:509
msgid "Back"
msgstr "Zurück"
@ -609,7 +609,7 @@ msgid "Background Color"
msgstr "Hintergrundfarbe"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:167
#: apps/web/src/components/forms/signin.tsx:473
#: apps/web/src/components/forms/signin.tsx:485
msgid "Backup Code"
msgstr "Backup-Code"
@ -621,7 +621,7 @@ msgstr "Backup-Codes"
msgid "Banner Updated"
msgstr "Banner aktualisiert"
#: apps/web/src/components/forms/v2/signup.tsx:460
#: apps/web/src/components/forms/v2/signup.tsx:472
msgid "Basic details"
msgstr "Basisdetails"
@ -662,7 +662,7 @@ msgstr "Durch die Aktivierung von 2FA müssen Sie jedes Mal, wenn Sie sich anmel
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:470
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:74
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
@ -720,7 +720,7 @@ msgstr "Wählen..."
msgid "Claim account"
msgstr "Konto beanspruchen"
#: apps/web/src/components/forms/v2/signup.tsx:469
#: apps/web/src/components/forms/v2/signup.tsx:481
msgid "Claim username"
msgstr "Benutzername beanspruchen"
@ -728,7 +728,7 @@ msgstr "Benutzername beanspruchen"
msgid "Claim your profile later"
msgstr "Profile später beanspruchen"
#: apps/web/src/components/forms/v2/signup.tsx:267
#: apps/web/src/components/forms/v2/signup.tsx:279
msgid "Claim your username now"
msgstr "Benutzername jetzt beanspruchen"
@ -773,7 +773,7 @@ msgstr "Schließen"
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:425
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:304
#: apps/web/src/components/forms/v2/signup.tsx:522
#: apps/web/src/components/forms/v2/signup.tsx:534
msgid "Complete"
msgstr "Vollständig"
@ -887,7 +887,7 @@ msgstr "Token kopieren"
msgid "Create"
msgstr "Erstellen"
#: apps/web/src/components/forms/v2/signup.tsx:252
#: apps/web/src/components/forms/v2/signup.tsx:264
msgid "Create a new account"
msgstr "Ein neues Konto erstellen"
@ -956,7 +956,7 @@ msgstr "Webhook erstellen"
msgid "Create your account and start using state-of-the-art document signing."
msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensignieren."
#: apps/web/src/components/forms/v2/signup.tsx:256
#: apps/web/src/components/forms/v2/signup.tsx:268
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensignieren. Offenes und schönes Signieren liegt in Ihrer Reichweite."
@ -1335,7 +1335,7 @@ msgid "Documents Viewed"
msgstr "Dokumente angesehen"
#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:40
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:61
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:45
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Haben Sie kein Konto? <0>Registrieren</0>"
@ -1412,7 +1412,7 @@ msgstr "Webhook bearbeiten"
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
#: apps/web/src/components/forms/profile.tsx:122
#: apps/web/src/components/forms/signin.tsx:326
#: apps/web/src/components/forms/signin.tsx:338
#: apps/web/src/components/forms/signup.tsx:180
msgid "Email"
msgstr "E-Mail"
@ -1423,7 +1423,7 @@ msgstr "E-Mail"
msgid "Email address"
msgstr "E-Mail-Adresse"
#: apps/web/src/components/forms/v2/signup.tsx:316
#: apps/web/src/components/forms/v2/signup.tsx:328
msgid "Email Address"
msgstr "E-Mail-Adresse"
@ -1584,7 +1584,7 @@ msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Die Datei darf nicht größer als {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB sein"
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
#: apps/web/src/components/forms/signin.tsx:358
#: apps/web/src/components/forms/signin.tsx:370
msgid "Forgot your password?"
msgstr "Haben Sie Ihr Passwort vergessen?"
@ -1593,7 +1593,7 @@ msgstr "Haben Sie Ihr Passwort vergessen?"
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:361
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:241
#: apps/web/src/components/forms/profile.tsx:110
#: apps/web/src/components/forms/v2/signup.tsx:300
#: apps/web/src/components/forms/v2/signup.tsx:312
msgid "Full Name"
msgstr "Vollständiger Name"
@ -1864,8 +1864,8 @@ msgid "Loading..."
msgstr "Wird geladen..."
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:54
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:78
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:72
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:75
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
msgid "Login"
msgstr "Anmelden"
@ -2039,7 +2039,7 @@ msgstr "Neue Vorlage"
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:416
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:295
#: apps/web/src/components/forms/v2/signup.tsx:509
#: apps/web/src/components/forms/v2/signup.tsx:521
msgid "Next"
msgstr "Nächster"
@ -2150,11 +2150,11 @@ msgstr "Geöffnet"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
#: apps/web/src/components/forms/signup.tsx:243
#: apps/web/src/components/forms/signup.tsx:267
#: apps/web/src/components/forms/v2/signup.tsx:371
#: apps/web/src/components/forms/v2/signup.tsx:383
msgid "Or"
msgstr "Oder"
#: apps/web/src/components/forms/signin.tsx:378
#: apps/web/src/components/forms/signin.tsx:390
msgid "Or continue with"
msgstr "Oder fahren Sie fort mit"
@ -2171,7 +2171,7 @@ msgstr "Besitzer"
msgid "Paid"
msgstr "Bezahlt"
#: apps/web/src/components/forms/signin.tsx:423
#: apps/web/src/components/forms/signin.tsx:435
msgid "Passkey"
msgstr "Passkey"
@ -2211,9 +2211,9 @@ msgstr "Passkeys werden von diesem Browser nicht unterstützt"
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:70
#: apps/web/src/components/forms/password.tsx:123
#: apps/web/src/components/forms/reset-password.tsx:110
#: apps/web/src/components/forms/signin.tsx:344
#: apps/web/src/components/forms/signin.tsx:356
#: apps/web/src/components/forms/signup.tsx:196
#: apps/web/src/components/forms/v2/signup.tsx:332
#: apps/web/src/components/forms/v2/signup.tsx:344
msgid "Password"
msgstr "Passwort"
@ -2404,7 +2404,7 @@ msgstr "Öffentliches Profil"
msgid "Public profile URL"
msgstr "Öffentlicher Profil-URL"
#: apps/web/src/components/forms/v2/signup.tsx:438
#: apps/web/src/components/forms/v2/signup.tsx:450
msgid "Public profile username"
msgstr "Öffentlicher Profil-Benutzername"
@ -2758,17 +2758,17 @@ msgid "Sign field"
msgstr "Unterzeichnen-Feld"
#: apps/web/src/components/forms/signup.tsx:212
#: apps/web/src/components/forms/v2/signup.tsx:350
#: apps/web/src/components/forms/v2/signup.tsx:362
msgid "Sign Here"
msgstr "Hier unterzeichnen"
#: apps/web/src/app/not-found.tsx:29
#: apps/web/src/components/forms/signin.tsx:371
#: apps/web/src/components/forms/signin.tsx:498
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Sign In"
msgstr "Einloggen"
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:44
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:29
msgid "Sign in to your account"
msgstr "Melden Sie sich bei Ihrem Konto an"
@ -2782,7 +2782,7 @@ msgstr "Ausloggen"
msgid "Sign the document to complete the process."
msgstr "Unterschreiben Sie das Dokument, um den Vorgang abzuschließen."
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:72
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
msgid "Sign up"
msgstr "Registrieren"
@ -2791,12 +2791,12 @@ msgid "Sign Up"
msgstr "Registrieren"
#: apps/web/src/components/forms/signup.tsx:257
#: apps/web/src/components/forms/v2/signup.tsx:389
#: apps/web/src/components/forms/v2/signup.tsx:401
msgid "Sign Up with Google"
msgstr "Registrieren mit Google"
#: apps/web/src/components/forms/signup.tsx:281
#: apps/web/src/components/forms/v2/signup.tsx:405
#: apps/web/src/components/forms/v2/signup.tsx:417
msgid "Sign Up with OIDC"
msgstr "Registrieren mit OIDC"
@ -2822,8 +2822,8 @@ msgstr "Unterschriften erscheinen, sobald das Dokument abgeschlossen ist"
msgid "Signed"
msgstr "Unterzeichnet"
#: apps/web/src/components/forms/signin.tsx:371
#: apps/web/src/components/forms/signin.tsx:498
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Signing in..."
msgstr "Anmeldung..."
@ -2868,7 +2868,7 @@ msgstr "Website Einstellungen"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:117
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:43
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
@ -3434,7 +3434,7 @@ msgstr "To enable two-factor authentication, scan the following QR code using yo
msgid "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
msgstr "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:57
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:54
msgid "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
msgstr "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
@ -3523,7 +3523,7 @@ msgstr "Two factor authentication"
msgid "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
msgstr "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
#: apps/web/src/components/forms/signin.tsx:436
#: apps/web/src/components/forms/signin.tsx:448
msgid "Two-Factor Authentication"
msgstr "Two-Factor Authentication"
@ -3733,12 +3733,12 @@ msgid "Uploaded file not an allowed file type"
msgstr "Die hochgeladene Datei ist kein zulässiger Dateityp"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
#: apps/web/src/components/forms/signin.tsx:493
#: apps/web/src/components/forms/signin.tsx:505
msgid "Use Authenticator"
msgstr "Authenticator verwenden"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/signin.tsx:491
#: apps/web/src/components/forms/signin.tsx:503
msgid "Use Backup Code"
msgstr "Backup-Code verwenden"
@ -3754,7 +3754,7 @@ msgstr "Benutzer"
msgid "User ID"
msgstr "Benutzer-ID"
#: apps/web/src/components/forms/v2/signup.tsx:222
#: apps/web/src/components/forms/v2/signup.tsx:234
msgid "User profiles are here!"
msgstr "Benutzerprofile sind hier!"
@ -4033,7 +4033,7 @@ msgid "We were unable to disable two-factor authentication for your account. Ple
msgstr "Wir konnten die Zwei-Faktor-Authentifizierung für Ihr Konto nicht deaktivieren. Bitte stellen Sie sicher, dass Sie Ihr Passwort und den Backup-Code korrekt eingegeben haben und versuchen Sie es erneut."
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:28
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:44
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:39
msgid "We were unable to log you out at this time."
msgstr "Wir konnten Sie zurzeit nicht abmelden."
@ -4100,7 +4100,7 @@ msgstr "Webhooks"
msgid "Weekly"
msgstr "Wöchentlich"
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:48
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
msgid "Welcome back, we are lucky to have you."
msgstr "Willkommen zurück, wir freuen uns, Sie zu haben."
@ -4326,7 +4326,7 @@ msgstr "Sie müssen mindestens einen anderen Teamkollegen haben, um die Eigentum
msgid "You must set a profile URL before enabling your public profile."
msgstr "Sie müssen eine Profil-URL festlegen, bevor Sie Ihr öffentliches Profil aktivieren."
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:61
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:56
msgid "You need to be logged in as <0>{email}</0> to view this page."
msgstr "Sie müssen als <0>{email}</0> angemeldet sein, um diese Seite anzuzeigen."
@ -4338,7 +4338,7 @@ msgstr "Sie müssen angemeldet sein, um diese Seite anzuzeigen."
msgid "You need to setup 2FA to mark this document as viewed."
msgstr "Sie müssen 2FA einrichten, um dieses Dokument als angesehen zu markieren."
#: apps/web/src/components/forms/v2/signup.tsx:271
#: apps/web/src/components/forms/v2/signup.tsx:283
msgid "You will get notified & be able to set up your documenso public profile when we launch the feature."
msgstr "Sie werden benachrichtigt und können Ihr Documenso öffentliches Profil einrichten, wenn wir die Funktion starten."

View File

@ -334,7 +334,7 @@ msgstr "All Time"
msgid "Allows authenticating using biometrics, password managers, hardware keys, etc."
msgstr "Allows authenticating using biometrics, password managers, hardware keys, etc."
#: apps/web/src/components/forms/v2/signup.tsx:411
#: apps/web/src/components/forms/v2/signup.tsx:423
msgid "Already have an account? <0>Sign in instead</0>"
msgstr "Already have an account? <0>Sign in instead</0>"
@ -573,7 +573,7 @@ msgid "Audit Log"
msgstr "Audit Log"
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:57
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
msgid "Authentication required"
msgstr "Authentication required"
@ -591,7 +591,7 @@ msgstr "Awaiting email confirmation"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:369
#: apps/web/src/components/(dashboard)/settings/layout/activity-back.tsx:20
#: apps/web/src/components/forms/v2/signup.tsx:497
#: apps/web/src/components/forms/v2/signup.tsx:509
msgid "Back"
msgstr "Back"
@ -604,7 +604,7 @@ msgid "Background Color"
msgstr "Background Color"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:167
#: apps/web/src/components/forms/signin.tsx:473
#: apps/web/src/components/forms/signin.tsx:485
msgid "Backup Code"
msgstr "Backup Code"
@ -616,7 +616,7 @@ msgstr "Backup codes"
msgid "Banner Updated"
msgstr "Banner Updated"
#: apps/web/src/components/forms/v2/signup.tsx:460
#: apps/web/src/components/forms/v2/signup.tsx:472
msgid "Basic details"
msgstr "Basic details"
@ -657,7 +657,7 @@ msgstr "By enabling 2FA, you will be required to enter a code from your authenti
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:470
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:74
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
@ -715,7 +715,7 @@ msgstr "Choose..."
msgid "Claim account"
msgstr "Claim account"
#: apps/web/src/components/forms/v2/signup.tsx:469
#: apps/web/src/components/forms/v2/signup.tsx:481
msgid "Claim username"
msgstr "Claim username"
@ -723,7 +723,7 @@ msgstr "Claim username"
msgid "Claim your profile later"
msgstr "Claim your profile later"
#: apps/web/src/components/forms/v2/signup.tsx:267
#: apps/web/src/components/forms/v2/signup.tsx:279
msgid "Claim your username now"
msgstr "Claim your username now"
@ -768,7 +768,7 @@ msgstr "Close"
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:425
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:304
#: apps/web/src/components/forms/v2/signup.tsx:522
#: apps/web/src/components/forms/v2/signup.tsx:534
msgid "Complete"
msgstr "Complete"
@ -882,7 +882,7 @@ msgstr "Copy token"
msgid "Create"
msgstr "Create"
#: apps/web/src/components/forms/v2/signup.tsx:252
#: apps/web/src/components/forms/v2/signup.tsx:264
msgid "Create a new account"
msgstr "Create a new account"
@ -951,7 +951,7 @@ msgstr "Create Webhook"
msgid "Create your account and start using state-of-the-art document signing."
msgstr "Create your account and start using state-of-the-art document signing."
#: apps/web/src/components/forms/v2/signup.tsx:256
#: apps/web/src/components/forms/v2/signup.tsx:268
msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
msgstr "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
@ -1330,7 +1330,7 @@ msgid "Documents Viewed"
msgstr "Documents Viewed"
#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:40
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:61
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:45
msgid "Don't have an account? <0>Sign up</0>"
msgstr "Don't have an account? <0>Sign up</0>"
@ -1407,7 +1407,7 @@ msgstr "Edit webhook"
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
#: apps/web/src/components/forms/profile.tsx:122
#: apps/web/src/components/forms/signin.tsx:326
#: apps/web/src/components/forms/signin.tsx:338
#: apps/web/src/components/forms/signup.tsx:180
msgid "Email"
msgstr "Email"
@ -1418,7 +1418,7 @@ msgstr "Email"
msgid "Email address"
msgstr "Email address"
#: apps/web/src/components/forms/v2/signup.tsx:316
#: apps/web/src/components/forms/v2/signup.tsx:328
msgid "Email Address"
msgstr "Email Address"
@ -1579,7 +1579,7 @@ msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
#: apps/web/src/components/forms/signin.tsx:358
#: apps/web/src/components/forms/signin.tsx:370
msgid "Forgot your password?"
msgstr "Forgot your password?"
@ -1588,7 +1588,7 @@ msgstr "Forgot your password?"
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:361
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:241
#: apps/web/src/components/forms/profile.tsx:110
#: apps/web/src/components/forms/v2/signup.tsx:300
#: apps/web/src/components/forms/v2/signup.tsx:312
msgid "Full Name"
msgstr "Full Name"
@ -1859,8 +1859,8 @@ msgid "Loading..."
msgstr "Loading..."
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:54
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:78
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:72
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:75
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
msgid "Login"
msgstr "Login"
@ -2034,7 +2034,7 @@ msgstr "New Template"
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:416
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:295
#: apps/web/src/components/forms/v2/signup.tsx:509
#: apps/web/src/components/forms/v2/signup.tsx:521
msgid "Next"
msgstr "Next"
@ -2145,11 +2145,11 @@ msgstr "Opened"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
#: apps/web/src/components/forms/signup.tsx:243
#: apps/web/src/components/forms/signup.tsx:267
#: apps/web/src/components/forms/v2/signup.tsx:371
#: apps/web/src/components/forms/v2/signup.tsx:383
msgid "Or"
msgstr "Or"
#: apps/web/src/components/forms/signin.tsx:378
#: apps/web/src/components/forms/signin.tsx:390
msgid "Or continue with"
msgstr "Or continue with"
@ -2166,7 +2166,7 @@ msgstr "Owner"
msgid "Paid"
msgstr "Paid"
#: apps/web/src/components/forms/signin.tsx:423
#: apps/web/src/components/forms/signin.tsx:435
msgid "Passkey"
msgstr "Passkey"
@ -2206,9 +2206,9 @@ msgstr "Passkeys are not supported on this browser"
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:70
#: apps/web/src/components/forms/password.tsx:123
#: apps/web/src/components/forms/reset-password.tsx:110
#: apps/web/src/components/forms/signin.tsx:344
#: apps/web/src/components/forms/signin.tsx:356
#: apps/web/src/components/forms/signup.tsx:196
#: apps/web/src/components/forms/v2/signup.tsx:332
#: apps/web/src/components/forms/v2/signup.tsx:344
msgid "Password"
msgstr "Password"
@ -2399,7 +2399,7 @@ msgstr "Public Profile"
msgid "Public profile URL"
msgstr "Public profile URL"
#: apps/web/src/components/forms/v2/signup.tsx:438
#: apps/web/src/components/forms/v2/signup.tsx:450
msgid "Public profile username"
msgstr "Public profile username"
@ -2753,17 +2753,17 @@ msgid "Sign field"
msgstr "Sign field"
#: apps/web/src/components/forms/signup.tsx:212
#: apps/web/src/components/forms/v2/signup.tsx:350
#: apps/web/src/components/forms/v2/signup.tsx:362
msgid "Sign Here"
msgstr "Sign Here"
#: apps/web/src/app/not-found.tsx:29
#: apps/web/src/components/forms/signin.tsx:371
#: apps/web/src/components/forms/signin.tsx:498
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Sign In"
msgstr "Sign In"
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:44
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:29
msgid "Sign in to your account"
msgstr "Sign in to your account"
@ -2777,7 +2777,7 @@ msgstr "Sign Out"
msgid "Sign the document to complete the process."
msgstr "Sign the document to complete the process."
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:72
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
msgid "Sign up"
msgstr "Sign up"
@ -2786,12 +2786,12 @@ msgid "Sign Up"
msgstr "Sign Up"
#: apps/web/src/components/forms/signup.tsx:257
#: apps/web/src/components/forms/v2/signup.tsx:389
#: apps/web/src/components/forms/v2/signup.tsx:401
msgid "Sign Up with Google"
msgstr "Sign Up with Google"
#: apps/web/src/components/forms/signup.tsx:281
#: apps/web/src/components/forms/v2/signup.tsx:405
#: apps/web/src/components/forms/v2/signup.tsx:417
msgid "Sign Up with OIDC"
msgstr "Sign Up with OIDC"
@ -2817,8 +2817,8 @@ msgstr "Signatures will appear once the document has been completed"
msgid "Signed"
msgstr "Signed"
#: apps/web/src/components/forms/signin.tsx:371
#: apps/web/src/components/forms/signin.tsx:498
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Signing in..."
msgstr "Signing in..."
@ -2863,7 +2863,7 @@ msgstr "Site Settings"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:117
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:43
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
@ -3429,7 +3429,7 @@ msgstr "To enable two-factor authentication, scan the following QR code using yo
msgid "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
msgstr "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:57
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:54
msgid "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
msgstr "To mark this document as viewed, you need to be logged in as <0>{0}</0>"
@ -3518,7 +3518,7 @@ msgstr "Two factor authentication"
msgid "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
msgstr "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
#: apps/web/src/components/forms/signin.tsx:436
#: apps/web/src/components/forms/signin.tsx:448
msgid "Two-Factor Authentication"
msgstr "Two-Factor Authentication"
@ -3728,12 +3728,12 @@ msgid "Uploaded file not an allowed file type"
msgstr "Uploaded file not an allowed file type"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
#: apps/web/src/components/forms/signin.tsx:493
#: apps/web/src/components/forms/signin.tsx:505
msgid "Use Authenticator"
msgstr "Use Authenticator"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/signin.tsx:491
#: apps/web/src/components/forms/signin.tsx:503
msgid "Use Backup Code"
msgstr "Use Backup Code"
@ -3749,7 +3749,7 @@ msgstr "User"
msgid "User ID"
msgstr "User ID"
#: apps/web/src/components/forms/v2/signup.tsx:222
#: apps/web/src/components/forms/v2/signup.tsx:234
msgid "User profiles are here!"
msgstr "User profiles are here!"
@ -4028,7 +4028,7 @@ msgid "We were unable to disable two-factor authentication for your account. Ple
msgstr "We were unable to disable two-factor authentication for your account. Please ensure that you have entered your password and backup code correctly and try again."
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:28
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:44
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:39
msgid "We were unable to log you out at this time."
msgstr "We were unable to log you out at this time."
@ -4095,7 +4095,7 @@ msgstr "Webhooks"
msgid "Weekly"
msgstr "Weekly"
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:48
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
msgid "Welcome back, we are lucky to have you."
msgstr "Welcome back, we are lucky to have you."
@ -4321,7 +4321,7 @@ msgstr "You must have at least one other team member to transfer ownership."
msgid "You must set a profile URL before enabling your public profile."
msgstr "You must set a profile URL before enabling your public profile."
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:61
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:56
msgid "You need to be logged in as <0>{email}</0> to view this page."
msgstr "You need to be logged in as <0>{email}</0> to view this page."
@ -4333,7 +4333,7 @@ msgstr "You need to be logged in to view this page."
msgid "You need to setup 2FA to mark this document as viewed."
msgstr "You need to setup 2FA to mark this document as viewed."
#: apps/web/src/components/forms/v2/signup.tsx:271
#: apps/web/src/components/forms/v2/signup.tsx:283
msgid "You will get notified & be able to set up your documenso public profile when we launch the feature."
msgstr "You will get notified & be able to set up your documenso public profile when we launch the feature."

View File

@ -90,8 +90,18 @@ export const extractLocaleData = ({
lang = 'en';
}
// Filter out locales that are not valid.
const locales = (langHeader?.locales ?? []).filter((locale) => {
try {
new Intl.Locale(locale);
return true;
} catch {
return false;
}
});
return {
lang: lang || APP_I18N_OPTIONS.sourceLang,
locales: langHeader.locales,
locales,
};
};

View File

@ -1,17 +1,8 @@
import { encryptSecondaryData } from '@documenso/lib/server-only/crypto/encrypt';
import { procedure, router } from '../trpc';
import { ZEncryptSecondaryDataMutationSchema } from './schema';
export const cryptoRouter = router({
encryptSecondaryData: procedure
.input(ZEncryptSecondaryDataMutationSchema)
.mutation(({ input }) => {
try {
return encryptSecondaryData(input);
} catch {
// Never leak errors for crypto.
throw new Error('Failed to encrypt data');
}
}),
encryptSecondaryData: procedure.input(ZEncryptSecondaryDataMutationSchema).mutation(() => {
throw new Error('Public usage of encryptSecondaryData is no longer permitted');
}),
});