From ccfcb3de69728216e0b6f0577fe099dd10c63448 Mon Sep 17 00:00:00 2001
From: razzanYoni <13521087@mahasiswa.itb.ac.id>
Date: Tue, 14 Nov 2023 10:15:01 +0700
Subject: [PATCH] feat : add auth validation

---
 src/services/auth-service.ts      |  6 ++++++
 src/validation/auth-validation.ts | 16 ++++++++++++++++
 2 files changed, 22 insertions(+)
 create mode 100644 src/validation/auth-validation.ts

diff --git a/src/services/auth-service.ts b/src/services/auth-service.ts
index 5b54ea3..09beb79 100644
--- a/src/services/auth-service.ts
+++ b/src/services/auth-service.ts
@@ -4,10 +4,14 @@ import prismaClient from "../cores/db";
 import { ErrorType, StandardError } from "../errors/standard-error";
 import { hashPassword, isPasswordValid } from "../utils/password";
 import { generateAccessTokenAndFingerprint } from "../utils/token";
+import {validate} from "../validation/validation";
+import {loginSchema, signupSchema} from "../validation/auth-validation";
 
 const signup = async (
   data: Prisma.UserCreateInput,
 ): Promise<{ userId: number; username: string }> => {
+  validate(signupSchema, data);
+
   // If username already exists throw error
   if (
     (await prismaClient.user.findUnique({
@@ -39,6 +43,8 @@ const signup = async (
 };
 
 const login = async (data: { username: string; password: string }) => {
+  validate(loginSchema, data);
+
   const user = await prismaClient.user.findUnique({
     where: {
       username: data.username,
diff --git a/src/validation/auth-validation.ts b/src/validation/auth-validation.ts
new file mode 100644
index 0000000..4690055
--- /dev/null
+++ b/src/validation/auth-validation.ts
@@ -0,0 +1,16 @@
+import { z } from "zod";
+
+const signupSchema = z.object({
+    username: z.string().min(1).max(255),
+    password: z.string().min(1).max(255),
+});
+
+const loginSchema = z.object({
+    username: z.string().min(1).max(255),
+    password: z.string().min(1).max(255),
+});
+
+export {
+    signupSchema,
+    loginSchema,
+}
\ No newline at end of file
-- 
GitLab