import { addOTPEmail, addOTPSMS, getBrandingSettings, getSession, registerTOTP, server, } from "#/lib/zitadel"; import DynamicTheme from "#/ui/DynamicTheme"; import TOTPRegister from "#/ui/TOTPRegister"; import { getMostRecentCookieWithLoginname } from "#/utils/cookies"; export default async function Page({ searchParams, params, }: { searchParams: Record; params: Record; }) { const { loginName, organization, sessionId, authRequestId } = searchParams; const { method } = params; const branding = await getBrandingSettings(server, organization); const totpResponse = await loadSession(loginName, organization).then( ({ session, token }) => { if (session && session.factors?.user?.id) { if (method === "time-based") { return registerTOTP(session.factors.user.id, token); } else if (method === "sms") { return addOTPSMS(session.factors.user.id); } else if (method === "email") { return addOTPEmail(session.factors.user.id); } else { throw new Error("Invalid method"); } } else { throw new Error("No session found"); } } ); async function loadSession(loginName?: string, organization?: string) { const recent = await getMostRecentCookieWithLoginname( loginName, organization ); return getSession(server, recent.id, recent.token).then((response) => { return { session: response?.session, token: recent.token }; }); } return (

Register TOTP

Scan the QR Code or navigate to the URL manually.

{/* {auth &&
{auth.to}
} */} {totpResponse && "uri" in totpResponse && "secret" in totpResponse && ( )}
); }