From 888d80413b840dfa6fc5d40aec5f69448cedf1ac Mon Sep 17 00:00:00 2001
From: squiz <wallisf@cardiff.ac.uk>
Date: Mon, 20 Dec 2021 20:45:45 +0000
Subject: [PATCH] adding express validator - doesn't work

---
 Backend/Middleware/validator.js         | 23 +++++++++++++++
 Backend/node_modules/.package-lock.json | 21 ++++++++++++-
 Backend/package-lock.json               | 39 +++++++++++++++++++++++--
 Backend/package.json                    |  1 +
 Backend/routes/authRoutes.js            |  4 ++-
 frontend/src/Components/SignUpForm.js   |  1 -
 6 files changed, 83 insertions(+), 6 deletions(-)
 create mode 100644 Backend/Middleware/validator.js

diff --git a/Backend/Middleware/validator.js b/Backend/Middleware/validator.js
new file mode 100644
index 0000000..3a55fa1
--- /dev/null
+++ b/Backend/Middleware/validator.js
@@ -0,0 +1,23 @@
+const {check, validationResult } = require('express-validator');
+
+exports.signupValidator = [
+    check('firstName').not().isEmpty().trim().withMessage("First name is required"),
+    check('lastName').not().isEmpty().trim().withMessage("Last name is required"),
+    check('email').isEmail().normalizeEmail().withMessage("Last name is required"),
+    check('password').isLength({min: 6}).withMessage("Password msut be at least 6 characters long"),
+]
+
+// module.exports = signupValidator
+
+exports.validatorResult = (req, res, next) => {
+    const result = validationResult(req);
+    const hasErrors = !result.isEmpty();
+
+    if (hasErrors) {
+        console.log('Has errors:', hasErrors)
+        console.log("result", result)
+    }
+    next();
+}
+
+// module.exports = validationResult
\ No newline at end of file
diff --git a/Backend/node_modules/.package-lock.json b/Backend/node_modules/.package-lock.json
index 765ed65..351ed74 100644
--- a/Backend/node_modules/.package-lock.json
+++ b/Backend/node_modules/.package-lock.json
@@ -2378,6 +2378,18 @@
         "node": ">= 0.10.0"
       }
     },
+    "node_modules/express-validator": {
+      "version": "6.14.0",
+      "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.14.0.tgz",
+      "integrity": "sha512-ZWHJfnRgePp3FKRSKMtnZVnD1s8ZchWD+jSl7UMseGIqhweCo1Z9916/xXBbJAa6PrA3pUZfkOvIsHZG4ZtIMw==",
+      "dependencies": {
+        "lodash": "^4.17.21",
+        "validator": "^13.7.0"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
     "node_modules/extend-shallow": {
       "version": "2.0.1",
       "dev": true,
@@ -3235,7 +3247,6 @@
     },
     "node_modules/lodash": {
       "version": "4.17.21",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/loose-envify": {
@@ -5036,6 +5047,14 @@
         "node": ">= 0.10.0"
       }
     },
+    "node_modules/validator": {
+      "version": "13.7.0",
+      "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+      "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
     "node_modules/vary": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
diff --git a/Backend/package-lock.json b/Backend/package-lock.json
index 976be55..344076c 100644
--- a/Backend/package-lock.json
+++ b/Backend/package-lock.json
@@ -13,6 +13,7 @@
         "body-parser": "^1.19.0",
         "cors": "^2.8.5",
         "express": "^4.17.1",
+        "express-validator": "^6.14.0",
         "mongoose": "^6.0.13",
         "nodemon": "^2.0.15"
       },
@@ -2397,6 +2398,18 @@
         "node": ">= 0.10.0"
       }
     },
+    "node_modules/express-validator": {
+      "version": "6.14.0",
+      "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.14.0.tgz",
+      "integrity": "sha512-ZWHJfnRgePp3FKRSKMtnZVnD1s8ZchWD+jSl7UMseGIqhweCo1Z9916/xXBbJAa6PrA3pUZfkOvIsHZG4ZtIMw==",
+      "dependencies": {
+        "lodash": "^4.17.21",
+        "validator": "^13.7.0"
+      },
+      "engines": {
+        "node": ">= 8.0.0"
+      }
+    },
     "node_modules/extend-shallow": {
       "version": "2.0.1",
       "dev": true,
@@ -3254,7 +3267,6 @@
     },
     "node_modules/lodash": {
       "version": "4.17.21",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/loose-envify": {
@@ -5055,6 +5067,14 @@
         "node": ">= 0.10.0"
       }
     },
+    "node_modules/validator": {
+      "version": "13.7.0",
+      "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+      "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
     "node_modules/vary": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -7145,6 +7165,15 @@
         "vary": "~1.1.2"
       }
     },
+    "express-validator": {
+      "version": "6.14.0",
+      "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.14.0.tgz",
+      "integrity": "sha512-ZWHJfnRgePp3FKRSKMtnZVnD1s8ZchWD+jSl7UMseGIqhweCo1Z9916/xXBbJAa6PrA3pUZfkOvIsHZG4ZtIMw==",
+      "requires": {
+        "lodash": "^4.17.21",
+        "validator": "^13.7.0"
+      }
+    },
     "extend-shallow": {
       "version": "2.0.1",
       "dev": true,
@@ -7752,8 +7781,7 @@
       }
     },
     "lodash": {
-      "version": "4.17.21",
-      "dev": true
+      "version": "4.17.21"
     },
     "loose-envify": {
       "version": "1.4.0",
@@ -9094,6 +9122,11 @@
         "user-home": "^1.1.1"
       }
     },
+    "validator": {
+      "version": "13.7.0",
+      "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+      "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
+    },
     "vary": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
diff --git a/Backend/package.json b/Backend/package.json
index 8169d5f..14a2f53 100644
--- a/Backend/package.json
+++ b/Backend/package.json
@@ -19,6 +19,7 @@
     "body-parser": "^1.19.0",
     "cors": "^2.8.5",
     "express": "^4.17.1",
+    "express-validator": "^6.14.0",
     "mongoose": "^6.0.13",
     "nodemon": "^2.0.15"
   }
diff --git a/Backend/routes/authRoutes.js b/Backend/routes/authRoutes.js
index 5fc2d07..e5b0106 100644
--- a/Backend/routes/authRoutes.js
+++ b/Backend/routes/authRoutes.js
@@ -1,7 +1,9 @@
+import {signupValidator, validatorResult} from "../Middleware/validator";
 import test from "../controllers/authControllers";
 
 const authRoutes = (app) => {
-    app.route('/api/auth/signup').post(test) 
+    app.route('/api/auth/signup', signupValidator, validatorResult)
+        .post(test) 
 };
 
 export default authRoutes;
diff --git a/frontend/src/Components/SignUpForm.js b/frontend/src/Components/SignUpForm.js
index 0b0cb1a..b7f9c57 100644
--- a/frontend/src/Components/SignUpForm.js
+++ b/frontend/src/Components/SignUpForm.js
@@ -24,7 +24,6 @@ const SignUpForm = () => {
             errorMsg: ''
         })
         console.log(formData)
-
     }
 
     const handleSubmit = (event) => {
-- 
GitLab