62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import { fail, redirect } from '@sveltejs/kit';
|
|
import type { Actions } from './$types';
|
|
import type { PageServerLoad } from './$types';
|
|
import { auth } from '$lib/server/auth';
|
|
import { APIError } from 'better-auth/api';
|
|
|
|
export const load: PageServerLoad = async (event) => {
|
|
if (event.locals.user) {
|
|
return redirect(302, '/demo/better-auth');
|
|
}
|
|
return {};
|
|
};
|
|
|
|
export const actions: Actions = {
|
|
signInEmail: async (event) => {
|
|
const formData = await event.request.formData();
|
|
const email = formData.get('email')?.toString() ?? '';
|
|
const password = formData.get('password')?.toString() ?? '';
|
|
|
|
try {
|
|
await auth.api.signInEmail({
|
|
body: {
|
|
email,
|
|
password,
|
|
callbackURL: '/auth/verification-success'
|
|
}
|
|
});
|
|
} catch (error) {
|
|
if (error instanceof APIError) {
|
|
return fail(400, { message: error.message || 'Signin failed' });
|
|
}
|
|
return fail(500, { message: 'Unexpected error' });
|
|
}
|
|
|
|
return redirect(302, '/demo/better-auth');
|
|
},
|
|
signUpEmail: async (event) => {
|
|
const formData = await event.request.formData();
|
|
const email = formData.get('email')?.toString() ?? '';
|
|
const password = formData.get('password')?.toString() ?? '';
|
|
const name = formData.get('name')?.toString() ?? '';
|
|
|
|
try {
|
|
await auth.api.signUpEmail({
|
|
body: {
|
|
email,
|
|
password,
|
|
name,
|
|
callbackURL: '/auth/verification-success'
|
|
}
|
|
});
|
|
} catch (error) {
|
|
if (error instanceof APIError) {
|
|
return fail(400, { message: error.message || 'Registration failed' });
|
|
}
|
|
return fail(500, { message: 'Unexpected error' });
|
|
}
|
|
|
|
return redirect(302, '/demo/better-auth');
|
|
}
|
|
};
|