diff --git a/src/public/javascript/validator.js b/src/public/javascript/validator.js
index 504ad19d584d00e4e4ad8d21459de2a4ddcff579..4b26b7973cfa586ca48cf69b54000da6415918f1 100644
--- a/src/public/javascript/validator.js
+++ b/src/public/javascript/validator.js
@@ -27,6 +27,10 @@
 
 const alphaNumericRegex = /^[a-zA-Z0-9]+$/;
 const alphaNumericSpaceRegex = /^[a-zA-Z0-9 ]+$/;
+const oneDigit = /[0-9]/;
+const oneLowercase = /[a-z]/;
+const oneUppercase = /[A-Z]/;
+const oneSpecial = /[*.!@#$%^&(){}]/;
 
 function validate(formName, listOfFieldAndValidator) {
   const form = document.forms[formName];
@@ -173,4 +177,39 @@ function videoCheck(videoFile, megaByteLimit) {
     validity: true,
     message: "",
   };
+}
+
+function passwordCheck(password) {
+  if(!password.match(oneDigit)) {
+    console.log("Masuk one digit");
+    return {
+      validity: false,
+      message: "Password must have at least a single digit!",
+    };
+  }
+  else if(!password.match(oneLowercase)) {
+    console.log("Masuk one lowercase");
+    return {
+      validity: false,
+      message: "Password must have at least a lowercase character!",
+    };
+  }
+  else if(!password.match(oneUppercase)) {
+    console.log("Masuk one uppercase");
+    return {
+      validity: false,
+      message: "Password must have at least an uppercase character!",
+    };
+  }
+  else if(!password.match(oneSpecial)) {
+    console.log("Masuk one special");
+    return {
+      validity: false,
+      message: "Password must have at least one of these characters *.!@#$%^&(){} !",
+    };
+  }
+  else {
+    console.log("Sukses");
+    return { validity: true, message: `` };
+  }
 }
\ No newline at end of file
diff --git a/src/signup/index.php b/src/signup/index.php
index d1041ff4cfe816de4dac747b44c098135306580e..39a33a3ed31ab85cb1b4d8fbb81e2e6ac12f4c00 100644
--- a/src/signup/index.php
+++ b/src/signup/index.php
@@ -90,7 +90,7 @@ session_start();
                     },
                     {
                         fieldName: "password",
-                        validatorFunction: (password) => lengthCheck('password', password, 6, 50) 
+                        validatorFunction: (password) => lengthCheck('password', password, 6, 50) && passwordCheck(password)
                     }
                 ]
             )