Add login and register

This commit is contained in:
2025-08-04 20:23:19 +02:00
parent 8aa8be7e9f
commit 9320adb6cd
11 changed files with 524 additions and 21 deletions
+49
View File
@@ -0,0 +1,49 @@
import { hash } from 'argon2';
import { useValidatedBody, z } from 'h3-zod';
import prisma from '~~/lib/prisma';
export default defineEventHandler(async (event) => {
await clearUserSession(event as any);
const { email, password, name } = await useValidatedBody(
event,
z.object({
email: z.email().min(5).trim(),
password: z.string().min(8),
name: z.string().min(5).max(64).trim()
})
);
const exists = await prisma.user.findUnique({
where: {
email
},
select: { id: true }
});
if (exists !== null) {
throw createError({
status: 409,
statusText: 'User with that email already exists!'
});
}
const passwordHash = await hash(password);
const user = await prisma.user.create({
data: {
password: passwordHash,
name,
email
},
select: { id: true, name: true, role: true }
});
console.warn(`Successful register: ${email}`);
await setUserSession(event, {
user: user
});
return { success: true, user: { id: user.id } };
});