example-sveltekit-email-pas.../src/routes/2fa/passkey/+page.server.ts

29 lines
832 B
TypeScript
Raw Normal View History

2024-10-03 09:50:34 +00:00
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
};
}