25 lines
699 B
TypeScript
25 lines
699 B
TypeScript
import { fail, redirect } from '@sveltejs/kit';
|
|
import { joinMember, setDeviceTokenCookie } from '$lib/server/auth';
|
|
|
|
export const actions = {
|
|
default: async (event) => {
|
|
const code = event.params.code;
|
|
const fd = await event.request.formData();
|
|
const name = fd.get('name') as string;
|
|
|
|
if (!name) {
|
|
return fail(400, { error: 'Name is required' });
|
|
}
|
|
|
|
const deviceToken = crypto.randomUUID();
|
|
|
|
try {
|
|
const result = await joinMember(code, name, deviceToken);
|
|
setDeviceTokenCookie(event, deviceToken);
|
|
throw redirect(303, `/${result.famSlug}/${result.name}`);
|
|
} catch (e) {
|
|
return fail(400, { error: e instanceof Error ? e.message : 'Invalid invite code' });
|
|
}
|
|
},
|
|
};
|