Files
lofi/src/routes/demo/better-auth/login/+page.server.ts

59 lines
1.7 KiB
TypeScript

import { fail, redirect } from '@sveltejs/kit';
import type { Actions, PageServerLoad } from './$types';
import { APIError } from 'better-auth';
const getErrorMessage = (error: unknown, fallback: string) => {
if (error instanceof APIError) return error.message || fallback;
if (error instanceof Error) return error.message || fallback;
if (typeof error === 'object' && error && 'message' in error && typeof error.message === 'string') {
return error.message || fallback;
}
return fallback;
};
export const load: PageServerLoad = (event) => {
if (event.locals.user) {
return redirect(302, '/demo/better-auth');
}
return {};
};
export const actions: Actions = {
signInAccountNumber: async (event) => {
const { auth } = event.locals;
const formData = await event.request.formData();
const accountNumber = formData.get('accountNumber')?.toString().replace(/\D/g, '') ?? '';
try {
await auth.api.signInAccountNumber({
body: {
accountNumber,
},
});
} catch (error) {
console.error('Demo Better Auth account number sign-in failed', { accountNumber, error });
return fail(error instanceof APIError ? 400 : 500, {
message: getErrorMessage(error, 'Account number sign-in failed'),
});
}
return redirect(302, '/demo/better-auth');
},
createAccount: async (event) => {
const { auth } = event.locals;
try {
await auth.api.signInAnonymous();
} catch (error) {
console.error('Demo Better Auth account creation failed', { error });
return fail(error instanceof APIError ? 400 : 500, {
message: getErrorMessage(error, 'Account creation failed'),
});
}
return redirect(302, '/demo/better-auth');
},
};