Files
base/src/routes/[site]/+page.server.ts
T
eewing 121a6b5844
CI / build (push) Has been skipped
CI / deploy (push) Successful in 1m24s
feat(sso): issue one-time tokens for iframe apps
Generate short-lived SSO tokens in the site iframe route and add an exchange API to let child apps bootstrap their PocketBase session.
2026-02-19 09:35:58 -06:00

33 lines
892 B
TypeScript

import { sites, type SiteSlug } from '$lib/sites';
import { error } from '@sveltejs/kit';
import * as ssoStore from '$lib/sso-store';
import { randomUUID } from 'crypto';
export function load({ params, locals }) {
const slug = params.site?.toLowerCase() as SiteSlug | undefined;
const site = slug && slug in sites ? sites[slug as SiteSlug] : null;
if (!site) {
throw error(404, `Unknown site: ${params.site}`);
}
let ssoToken: string | undefined;
if (locals.user && locals.pb?.authStore?.token) {
try {
const token = locals.pb.authStore.token;
const model = locals.pb.authStore.record as Record<string, unknown> | null;
ssoToken = randomUUID();
ssoStore.set(ssoToken, { token, model });
} catch {
// no sso if export fails
}
}
return {
slug: slug as SiteSlug,
url: site.url,
title: site.title,
ssoToken
};
}