fix login confusion and enforce reactive subscription after login
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { fail, redirect } from '@sveltejs/kit';
|
||||
import { redeemOtp } from '$lib/server/member-otp';
|
||||
import { slugify, handle } from '@shared/slugify';
|
||||
import { setSessionCookie, clearLegacyCookies } from '$lib/server/session';
|
||||
|
||||
export const actions = {
|
||||
default: async (event) => {
|
||||
const fd = await event.request.formData();
|
||||
const famName = (fd.get('family') || '').toString().trim();
|
||||
const name = (fd.get('name') || '').toString().trim();
|
||||
const otp = (fd.get('otp') || '').toString().trim();
|
||||
|
||||
if (!famName) return fail(400, { error: 'Enter your family name.', famName, name, otp });
|
||||
if (!name) return fail(400, { error: 'Enter your name.', famName, name, otp });
|
||||
if (!otp) return fail(400, { error: 'Enter the code shown by your parent.', famName, name, otp });
|
||||
|
||||
const famSlug = slugify(famName);
|
||||
try {
|
||||
const token = await redeemOtp({ famSlug, username: name, otp });
|
||||
clearLegacyCookies(event.cookies);
|
||||
setSessionCookie(event.cookies, token);
|
||||
} catch (e) {
|
||||
return fail(400, {
|
||||
error: e instanceof Error ? e.message : 'Join failed',
|
||||
famName,
|
||||
name,
|
||||
otp
|
||||
});
|
||||
}
|
||||
|
||||
const handleName = handle(name);
|
||||
throw redirect(303, `/${famSlug}/${encodeURIComponent(handleName)}`);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user