Radon
Framework Integrations

SvelteKit

Mount Radon in SvelteKit — a catch-all +server.ts handler plus getUser for load functions and hooks. A Radon Pro feature.

Radon Pro

The SvelteKit integration is a Pro feature and requires a license. See Radon Pro.

SvelteKit speaks Web Request/Response, so Radon mounts as a handler you re-export from a catch-all +server.ts.

1. Mount the auth routes

src/routes/api/auth/[...radon]/+server.ts
import { radonSvelteKit } from "@radonsdk/auth/pro/integrations/sveltekit";
import { auth } from "$lib/auth";

const handle = radonSvelteKit(auth, { basePath: "/api/auth" });

export const GET = ({ request }) => handle(request);
export const POST = ({ request }) => handle(request);

2. Read the user in a load function

getUser(auth, request) returns the user or null.

src/routes/dashboard/+page.server.ts
import { getUser } from "@radonsdk/auth/pro/integrations/sveltekit";
import { redirect } from "@sveltejs/kit";
import { auth } from "$lib/auth";

export async function load({ request }) {
  const user = await getUser(auth, request);
  if (!user) throw redirect(303, "/signin");
  return { user };
}

3. Populate locals.user in hooks

Do it once in hooks.server.ts so every route can read event.locals.user:

src/hooks.server.ts
import { getUser } from "@radonsdk/auth/pro/integrations/sveltekit";
import { auth } from "$lib/auth";

export async function handle({ event, resolve }) {
  event.locals.user = await getUser(auth, event.request);
  return resolve(event);
}

Next steps

On this page