diff --git a/apps/web/package.json b/apps/web/package.json
index efd524992..b01048047 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -23,6 +23,8 @@
"@documenso/trpc": "*",
"@documenso/ui": "*",
"@hookform/resolvers": "^3.1.0",
+ "@simplewebauthn/browser": "^9.0.1",
+ "@simplewebauthn/server": "^9.0.3",
"@tanstack/react-query": "^4.29.5",
"formidable": "^2.1.1",
"framer-motion": "^10.12.8",
@@ -52,6 +54,7 @@
"zod": "^3.22.4"
},
"devDependencies": {
+ "@simplewebauthn/types": "^9.0.1",
"@types/formidable": "^2.0.6",
"@types/luxon": "^3.3.1",
"@types/node": "20.1.0",
diff --git a/apps/web/src/app/(dashboard)/settings/security/activity/page.tsx b/apps/web/src/app/(dashboard)/settings/security/activity/page.tsx
index 2b5906177..a2b850412 100644
--- a/apps/web/src/app/(dashboard)/settings/security/activity/page.tsx
+++ b/apps/web/src/app/(dashboard)/settings/security/activity/page.tsx
@@ -15,15 +15,14 @@ export default function SettingsSecurityActivityPage() {
-
+
-
-
-
+
+
+
);
}
diff --git a/apps/web/src/app/(dashboard)/settings/security/page.tsx b/apps/web/src/app/(dashboard)/settings/security/page.tsx
index f46784aed..528454840 100644
--- a/apps/web/src/app/(dashboard)/settings/security/page.tsx
+++ b/apps/web/src/app/(dashboard)/settings/security/page.tsx
@@ -3,6 +3,7 @@ import Link from 'next/link';
import { IDENTITY_PROVIDER_NAME } from '@documenso/lib/constants/auth';
import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
+import { getServerComponentFlag } from '@documenso/lib/server-only/feature-flags/get-server-component-feature-flag';
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
import { Button } from '@documenso/ui/primitives/button';
@@ -18,6 +19,8 @@ export const metadata: Metadata = {
export default async function SecuritySettingsPage() {
const { user } = await getRequiredServerComponentSession();
+ const isPasskeyEnabled = await getServerComponentFlag('app_passkey');
+
return (
+ {isPasskeyEnabled && (
+
+
+
Passkeys
+
+
+ Allows authenticating using biometrics, password managers, hardware keys, etc.
+
+
+
+
+
+ )}
+
{user.twoFactorEnabled && (
-