ln/app/server/graphql/resolvers/auth/register.ts
2025-03-23 21:27:14 +02:00

33 lines
955 B
TypeScript

import { IdentityContext } from '@app/server/identity';
import { prisma, uuid } from '@app/server/prisma/client';
import { RegisterInput } from '@generated/types';
import bcrypt from 'bcrypt';
export async function SignUpResolver(
_: any,
input: RegisterInput,
{ identity }: IdentityContext
): Promise<void> {
const existingUsername = await prisma.user.findUnique({
where: { username: input.username },
select: { id: true }
});
if (existingUsername != null) throw Error('User with this username already exists.');
const existingEmail = await prisma.user.findUnique({
where: { email: input.email },
select: { id: true }
});
if (existingEmail != null) throw Error('Email is already in use.');
const hashedPassword = await bcrypt.hash(input.password, 10);
await prisma.user.create({
data: {
id: uuid(),
email: input.email,
username: input.username,
password: hashedPassword
}
});
}