mirror of
https://github.com/documenso/documenso.git
synced 2026-07-25 01:15:49 +10:00
138d663c25
Merge origin/main into feat/external-2fa-codes. Resolve formatting conflicts caused by biome rollout; preserve both feature streams: PR's external 2FA token + signing-session 2FA proof additions plus main's RateLimit/RecipientExpired/signingReminders/date-auto-insert. In complete-document-with-token.ts, drop the duplicate early field-fetching block introduced when main moved that logic later with date auto-insert support; keep the EXTERNAL_TWO_FACTOR_AUTH check using derivedRecipientActionAuth.
41 lines
1015 B
TypeScript
41 lines
1015 B
TypeScript
import { prisma } from '@documenso/prisma';
|
|
import { generateAuthenticationOptions } from '@simplewebauthn/server';
|
|
import { DateTime } from 'luxon';
|
|
|
|
import { getAuthenticatorOptions } from '../../utils/authenticator';
|
|
|
|
type CreatePasskeySigninOptions = {
|
|
sessionId: string;
|
|
};
|
|
|
|
export const createPasskeySigninOptions = async ({ sessionId }: CreatePasskeySigninOptions) => {
|
|
const { rpId, timeout } = getAuthenticatorOptions();
|
|
|
|
const options = await generateAuthenticationOptions({
|
|
rpID: rpId,
|
|
userVerification: 'preferred',
|
|
timeout,
|
|
});
|
|
|
|
const { challenge } = options;
|
|
|
|
await prisma.anonymousVerificationToken.upsert({
|
|
where: {
|
|
id: sessionId,
|
|
},
|
|
update: {
|
|
token: challenge,
|
|
expiresAt: DateTime.now().plus({ minutes: 2 }).toJSDate(),
|
|
createdAt: new Date(),
|
|
},
|
|
create: {
|
|
id: sessionId,
|
|
token: challenge,
|
|
expiresAt: DateTime.now().plus({ minutes: 2 }).toJSDate(),
|
|
createdAt: new Date(),
|
|
},
|
|
});
|
|
|
|
return options;
|
|
};
|