🐛 Fix schema validation for user creation

This commit is contained in:
Manuel
2023-07-31 22:36:43 +02:00
parent 061ae1ae6c
commit 961b8024ab
3 changed files with 22 additions and 23 deletions

View File

@@ -74,5 +74,5 @@ const randomString = () => {
}; };
export const createAccountSecurityStepValidationSchema = z.object({ export const createAccountSecurityStepValidationSchema = z.object({
password: z.string().min(10).max(50), password: z.string().min(8).max(100),
}); });

View File

@@ -4,6 +4,7 @@ import { z } from 'zod';
import { hashPassword } from '~/utils/security'; import { hashPassword } from '~/utils/security';
import { import {
colorSchemeParser, colorSchemeParser,
createNewUserSchema,
signUpFormSchema, signUpFormSchema,
updateSettingsValidationSchema, updateSettingsValidationSchema,
} from '~/validations/user'; } from '~/validations/user';
@@ -188,29 +189,21 @@ export const userRouter = createTRPCRouter({
nextCursor, nextCursor,
}; };
}), }),
createUser: publicProcedure createUser: publicProcedure.input(createNewUserSchema).mutation(async ({ ctx, input }) => {
.input( const salt = bcrypt.genSaltSync(10);
z.object({ const hashedPassword = hashPassword(input.password, salt);
username: z.string(), await ctx.prisma.user.create({
email: z.string().email().optional(), data: {
password: z.string().min(8).max(100), name: input.username,
}) email: input.email,
) password: hashedPassword,
.mutation(async ({ ctx, input }) => { salt: salt,
const salt = bcrypt.genSaltSync(10); settings: {
const hashedPassword = hashPassword(input.password, salt); create: {},
await ctx.prisma.user.create({
data: {
name: input.username,
email: input.email,
password: hashedPassword,
salt: salt,
settings: {
create: {},
},
}, },
}); },
}), });
}),
deleteUser: publicProcedure deleteUser: publicProcedure
.input( .input(

View File

@@ -19,6 +19,12 @@ export const signUpFormSchema = z
path: ['passwordConfirmation'], path: ['passwordConfirmation'],
}); });
export const createNewUserSchema = z.object({
username: z.string(),
email: z.string().email().optional(),
password: z.string().min(8).max(100),
});
export const colorSchemeParser = z export const colorSchemeParser = z
.enum(['light', 'dark', 'environment']) .enum(['light', 'dark', 'environment'])
.default('environment') .default('environment')