Skip to content
Snippets Groups Projects
Select Git revision
  • f7d327c0788ae43daf1e31acdc53baf16d4e37dd
  • master default protected
2 results

register.ts

Blame
  • register.ts 900 B
    import { hash } from 'bcrypt';
    import { prisma } from '~/server/prisma';
    
    export default defineEventHandler(async (event) => {
        const userExists = await prisma.user.count();
        if (userExists) {
            throw createError({ statusCode: 403, statusMessage: 'User already exists' });
        }
    
        const { email, name, password } = await readBody(event);
    
        if (!/[A-Z]/.test(password) || !/[a-z]/.test(password) || !/[0-9]/.test(password) || !/[^A-Za-z0-9]/.test(password)) {
            return new Response('Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character', {
                status: 422,
            });
        }
    
        const hashedPassword = await hash(password, 10);
    
        const user = await prisma.user.create({
            data: {
                email,
                name,
                password: hashedPassword,
            },
        });
    
        return { user };
    });