example-sveltekit-email-pas.../src/routes/2fa/passkey/+page.server.ts
pilcrowOnPaper 25cc397095 init
2024-10-03 18:50:34 +09:00

28 lines
832 B
TypeScript

import { redirect } from "@sveltejs/kit";
import { get2FARedirect } from "$lib/server/2fa";
import { getUserPasskeyCredentials } from "$lib/server/webauthn";
import type { RequestEvent } from "./$types";
export async function load(event: RequestEvent) {
if (event.locals.user === null || event.locals.session === null) {
return redirect(302, "/login");
}
if (!event.locals.user.emailVerified) {
return redirect(302, "/verify-email");
}
if (!event.locals.user.registered2FA) {
return redirect(302, "/");
}
if (event.locals.session.twoFactorVerified) {
return redirect(302, "/");
}
if (!event.locals.user.registeredPasskey) {
return redirect(302, get2FARedirect(event.locals.user));
}
const credentials = getUserPasskeyCredentials(event.locals.user.id);
return {
credentials,
user: event.locals.user
};
}