From 7c7e907bcd54a3407652fe3da72ddba4a519ee9a Mon Sep 17 00:00:00 2001
From: squiz <wallisf@cardiff.ac.uk>
Date: Sat, 18 Dec 2021 16:00:02 +0000
Subject: [PATCH] Implemented sign up form

---
 frontend/package-lock.json            | 14 ++++++++++++++
 frontend/package.json                 |  1 +
 frontend/src/Components/SignUpForm.js | 21 +++++++++++++++++----
 frontend/yarn.lock                    |  5 +++++
 4 files changed, 37 insertions(+), 4 deletions(-)

diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index a1347f4e..28a3287c 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -16,6 +16,7 @@
         "react": "^17.0.2",
         "react-dom": "^17.0.2",
         "react-scripts": "4.0.3",
+        "validator": "^13.7.0",
         "web-vitals": "^1.0.1"
       },
       "devDependencies": {
@@ -18275,6 +18276,14 @@
         "spdx-expression-parse": "^3.0.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",
@@ -32255,6 +32264,11 @@
         "spdx-expression-parse": "^3.0.0"
       }
     },
+    "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/frontend/package.json b/frontend/package.json
index d1127079..2b582d45 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -11,6 +11,7 @@
     "react": "^17.0.2",
     "react-dom": "^17.0.2",
     "react-scripts": "4.0.3",
+    "validator": "^13.7.0",
     "web-vitals": "^1.0.1"
   },
   "scripts": {
diff --git a/frontend/src/Components/SignUpForm.js b/frontend/src/Components/SignUpForm.js
index 9b811fe0..44d918d5 100644
--- a/frontend/src/Components/SignUpForm.js
+++ b/frontend/src/Components/SignUpForm.js
@@ -1,5 +1,9 @@
 import React, { useState } from 'react';
 import { Link } from 'react-router-dom';
+import isEmail from 'validator/lib/isEmail';
+import isEmpty from 'validator/lib/isEmpty';
+import equals from 'validator/lib/equals';
+
 
 const SignUpForm = () => {
     const[formData, setFormData] = useState({
@@ -7,20 +11,28 @@ const SignUpForm = () => {
         lastName: '', 
         email: '', 
         password: '',
+        confirmPassword: '',
         successMsg: false,
         errorMsg: false
     })
 
-    const handleChange = (evt) => {
+    const handleChange = (event) => {
         setFormData({
             ...formData,
-            [evt.target.name]: evt.target.value,
+            [event.target.name]: event.target.value,
         })
+        console.log(formData)
 
     }
 
-    const handleSubmit = (evt) => {
-        evt.preventDefault()
+    const handleSubmit = (event) => {
+        event.preventDefault()
+        console.log(formData)
+
+        // Form validation
+        if (isEmpty(username) || isEmpty(lastName) || isEmpty(email) || isEmpty(confirmPassword)) {
+
+        }
     }
 
     return (
@@ -32,6 +44,7 @@ const SignUpForm = () => {
                     <input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='lastName' value={formData.lastName} type='text' placeholder='Last Name' onChange={handleChange}></input>
                     <input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='email' value={formData.email} type='email' placeholder='Email Address' onChange={handleChange}></input>
                     <input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='password' value={formData.password} type='password' placeholder='Password' onChange={handleChange}></input>
+                    <input className='font-montserrat font-medium rounded-full w-full py-4 px-7 shadow-lg' name='confirmPassword' value={formData.confirmPassword} type='password' placeholder='Confirm Password' onChange={handleChange}></input>
                     <button className='py-4 px-14 text-white bg-purple-500 hover:bg-purple-400 font-montserrat font-medium rounded-full' type='submit'>Sign Up</button>
                     <div className='mt-6 '>
                         <p className='forgot-password'>
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 8069d64c..b3d7e1ba 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -10194,6 +10194,11 @@
     "spdx-correct" "^3.0.0"
     "spdx-expression-parse" "^3.0.0"
 
+"validator@^13.7.0":
+  "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
+  "resolved" "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz"
+  "version" "13.7.0"
+
 "vary@~1.1.2":
   "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
   "version" "1.1.2"
-- 
GitLab