🧑💻 create zod error instance in helper
This commit is contained in:
@ -3,6 +3,7 @@ import { Prisma } from "@prisma/client";
|
|||||||
import { returnErrorResponse } from "../../callback/httpResponse";
|
import { returnErrorResponse } from "../../callback/httpResponse";
|
||||||
import { AppError } from "../instances/app";
|
import { AppError } from "../instances/app";
|
||||||
import { PrismaErrorCodeList } from "../../../utils/databases/prisma/error/codeList";
|
import { PrismaErrorCodeList } from "../../../utils/databases/prisma/error/codeList";
|
||||||
|
import z from "zod";
|
||||||
|
|
||||||
export const mainErrorHandler = (set: Context["set"], error: unknown) => {
|
export const mainErrorHandler = (set: Context["set"], error: unknown) => {
|
||||||
if (error instanceof AppError) {
|
if (error instanceof AppError) {
|
||||||
@ -51,5 +52,9 @@ export const mainErrorHandler = (set: Context["set"], error: unknown) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (error instanceof z.ZodError) {
|
||||||
|
return returnErrorResponse(set, 422, error.issues[0].message, error.issues);
|
||||||
|
}
|
||||||
|
|
||||||
return returnErrorResponse(set, 500, "Internal server error", error);
|
return returnErrorResponse(set, 500, "Internal server error", error);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import { Context } from "elysia";
|
import { Context } from "elysia";
|
||||||
import { createUserSchema } from "../schemas/createUser.schema";
|
import { createUserViaRegisterSchema } from "../schemas/createUserViaRegister.schema";
|
||||||
import { mainErrorHandler } from "../../../helpers/error/handler";
|
import { mainErrorHandler } from "../../../helpers/error/handler";
|
||||||
import { createUserViaRegisterService } from "../services/createUserViaRegister.service";
|
import { createUserViaRegisterService } from "../services/createUserViaRegister.service";
|
||||||
import { returnWriteResponse } from "../../../helpers/callback/httpResponse";
|
import { returnWriteResponse } from "../../../helpers/callback/httpResponse";
|
||||||
|
|
||||||
export const createUserViaRegisterController = async (ctx: Context) => {
|
export const createUserViaRegisterController = async (ctx: Context) => {
|
||||||
try {
|
try {
|
||||||
const validate = createUserSchema.parse(ctx.body);
|
const validate = createUserViaRegisterSchema.parse(ctx.body);
|
||||||
|
|
||||||
const createUser = await createUserViaRegisterService(validate);
|
const createUser = await createUserViaRegisterService(validate);
|
||||||
return returnWriteResponse(
|
return returnWriteResponse(
|
||||||
|
|||||||
@ -1,17 +0,0 @@
|
|||||||
import z from "zod";
|
|
||||||
|
|
||||||
export const createUserSchema = z.object({
|
|
||||||
name: z.string(),
|
|
||||||
username: z
|
|
||||||
.string()
|
|
||||||
.min(4) //Total all username character must over 4 character
|
|
||||||
.regex(/^[a-zA-Z0-9_-]+$/), //Prohibiting the use of spaces and symbols other than - and _
|
|
||||||
email: z.email(),
|
|
||||||
password: z
|
|
||||||
.string()
|
|
||||||
.min(8) //Total all password chaacter must over 8 character
|
|
||||||
.regex(/[A-Z]/) //Min has 1 uppercase letter
|
|
||||||
.regex(/[a-z]/) //Min has 1 lowercase letter
|
|
||||||
.regex(/[0-9]/) //Min has 1 number
|
|
||||||
.regex(/[^A-Za-z0-9"]/), //Min has 1 symbol character
|
|
||||||
});
|
|
||||||
23
src/modules/user/schemas/createUserViaRegister.schema.ts
Normal file
23
src/modules/user/schemas/createUserViaRegister.schema.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import z from "zod";
|
||||||
|
|
||||||
|
export const createUserViaRegisterSchema = z.object({
|
||||||
|
name: z.string(),
|
||||||
|
username: z
|
||||||
|
.string()
|
||||||
|
.min(4, "username: must be 4 characters or longer.") //Total all username character must over 4 character
|
||||||
|
.regex(
|
||||||
|
/^[a-zA-Z0-9_-]+$/,
|
||||||
|
"username: symbols other than - and _ are not allowed"
|
||||||
|
), //Prohibiting the use of spaces and symbols other than - and _
|
||||||
|
email: z.email(),
|
||||||
|
password: z
|
||||||
|
.string()
|
||||||
|
.min(8, "password: must be 8 characters or longer.") //Total all password chaacter must over 8 character
|
||||||
|
.regex(/[A-Z]/, "password: have at least 1 uppercase letter") //Have at least 1 uppercase letter
|
||||||
|
.regex(/[a-z]/, "password: have at least 1 lowercase letter") //Have at least 1 lowercase letter
|
||||||
|
.regex(/[0-9]/, "password: have at least 1 number") //Have at least 1 number
|
||||||
|
.regex(
|
||||||
|
/[^A-Za-z0-9"]/,
|
||||||
|
"password: has at least 1 symbol except quotation marks"
|
||||||
|
), //Have at least 1 symbol character
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user