From be97fa80e75239f5d39b3d16048b80017845863a Mon Sep 17 00:00:00 2001 From: Benjamin Palko Date: Fri, 13 Dec 2024 10:16:36 -0500 Subject: [PATCH] login/registration --- src/routes/login/+page.server.ts | 38 +++++++++++++++++++++++++ src/routes/login/+page.svelte | 49 ++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 src/routes/login/+page.server.ts create mode 100644 src/routes/login/+page.svelte diff --git a/src/routes/login/+page.server.ts b/src/routes/login/+page.server.ts new file mode 100644 index 0000000..0ec1e76 --- /dev/null +++ b/src/routes/login/+page.server.ts @@ -0,0 +1,38 @@ +import { logger } from '$lib/server/logger'; +import { prisma } from '$lib/server/prisma'; +import { error, redirect, type Actions } from '@sveltejs/kit'; + +export const actions = { + login: async (event) => { + const form = await event.request.formData(); + if (!form.has('email')) { + error(400, 'Email is a required form field!'); + } + const user = await prisma.user.findUnique({ + where: { + email: form.get('email') as string + } + }); + if (!user) { + logger.error('User not found! ${user}'); + error(401); + } + logger.info(`Login user { email: ${form.get('email')} }`); + event.cookies.set('user', String(user.id), { + path: '/', + maxAge: 120 + }); + redirect(302, '/'); + }, + register: async (event) => { + const form = await event.request.formData(); + // const user = prisma.user.create({ + // data: { + // email, + // name + // } + // }); + logger.info(`Login user { email: ${form.get('email')}, name: ${form.get('name')} }`); + redirect(302, '/'); + } +} satisfies Actions; \ No newline at end of file diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte new file mode 100644 index 0000000..1eb8b77 --- /dev/null +++ b/src/routes/login/+page.svelte @@ -0,0 +1,49 @@ + + +
+

Hestia

+ +
+ + \ No newline at end of file