51802ac42bde3279ef363593a4b7f6de.json 30.3 KB
Newer Older
1
{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\Bruger\\\\Desktop\\\\Web-projects\\\\pipit\\\\client\\\\src\\\\pages\\\\login\\\\Login.jsx\",\n    _s = $RefreshSig$();\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { useOktaAuth } from '@okta/okta-react';\nimport \"./Login.css\";\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { NavLink } from 'react-router-dom';\nimport config from \"../../config\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\n\nconst SignUp = () => {\n  _s();\n\n  const {\n    authState,\n    oktaAuth\n  } = useOktaAuth();\n  const [sessionToken, setSessionToken] = useState();\n  const signUpFormRef = useRef(null);\n  const [signUpFormVisibilityState, showSignUpForm] = useState(false);\n\n  const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState);\n\n  const [firstname, setfirstname] = useState('');\n  const [lastname, setlastname] = useState('');\n  const [username, setUsername] = useState('');\n  const [password, setPassword] = useState('');\n  const [confirmPassword, setConfirmPassword] = useState('');\n  useEffect(() => {\n    const pageClickEvent = e => {\n      console.log(\"Click\");\n\n      if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {\n        console.log(\"Form visible: \" + signUpFormVisibilityState);\n        toggleSignInFormVisible();\n      }\n    }; // If the item is active (ie open) then listen for clicks\n\n\n    if (signUpFormVisibilityState) {\n      console.log(\"Add eventlistener\");\n      window.addEventListener('click', pageClickEvent);\n    }\n\n    return () => {\n      console.log(\"Remove eventlistener\");\n      window.removeEventListener('click', pageClickEvent);\n    };\n  }, [signUpFormVisibilityState]);\n  const userInputData = JSON.stringify({\n    firstname: `${firstname}`,\n    lastname: `${lastname}`,\n    email: `${username}`,\n    password: `${password}`\n  });\n  const loginRequestOptions = {\n    method: 'POST',\n    body: userInputData\n  };\n  const resetPasswordRequestOptions = {\n    method: 'PUT',\n    body: userInputData\n  };\n\n  const handleSignUpFormSubmit = e => {\n    e.preventDefault();\n\n    if (!password || !confirmPassword) {\n      window.alert(\"A password field is blank\");\n      return;\n    }\n\n    if (!confirmPassword.length >= 7) {\n      window.alert(\"Password must consist of 8 characters or more\");\n      return;\n    }\n\n    if (password == confirmPassword) {// fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)\n      //   .then((res) => {\n      //     if (!res.ok) {\n      //       window.alert(\"Error\")\n      //       Promise.reject(\"\")\n      //       return\n      //     }\n      //     if (res.ok) {\n      //       handleSignInFormSubmit(e)\n      //     }\n      //   })\n    }\n  };\n\n  const handleSignInFormSubmit = e => {\n    e.preventDefault();\n    oktaAuth.signInWithCredentials({\n      username,\n      password\n    }).then(res => {\n      const sessionToken = res.sessionToken;\n      setSessionToken(sessionToken); // sessionToken is a one-use token, so make sure this is only called once\n\n      oktaAuth.signInWithRedirect({\n        sessionToken,\n        originalUri: '/home'\n      });\n    }).catch(err => console.log('Found an error', err));\n  };\n\n  const handlefirstnameChange = e => {\n    setfirstname(e.target.value);\n  };\n\n  const handlelastnameChange = e => {\n    setlastname(e.target.value);\n  };\n\n  const handleUsernameChange = e => {\n    setUsername(e.target.value);\n  };\n\n  const handlePasswordChange = e => {\n    setPassword(e.target.value);\n  };\n\n  const handleConfirmPasswordChange = e => {\n    setConfirmPassword(e.target.value);\n  };\n\n  if (sessionToken) {\n    // Hide form while sessionToken is converted into id/access tokens\n    return null;\n  }\n\n  const handlePasswordReset = () => {\n    if (!username == '') {\n      fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions).then(res => {\n        if (!res.ok) {\n          window.alert(\"Error: something went wrong\");\n          Promise.reject(\"\");\n          return;\n        }\n\n        if (res.ok) {// do something\n        }\n      });\n    } else {\n      window.alert(\"Please enter a valid email into the login form\");\n    }\n  };\n\n  if (!authState || !authState.isAuthenticated) {\n    return /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"pageContainer\",\n      children: [/*#__PURE__*/_jsxDEV(\"div\", {\n        className: `modal ${signUpFormVisibilityState ? \"active\" : \"inactive\"}`,\n        children: /*#__PURE__*/_jsxDEV(\"div\", {\n          ref: signUpFormRef,\n          className: \"modal-content\",\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            className: \"signUpForm\",\n            children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n              children: \"Sign Up\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 155,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n              onSubmit: handleSignUpFormSubmit,\n              children: [/*#__PURE__*/_jsxDEV(\"label\", {\n                children: [\"First name:\", /*#__PURE__*/_jsxDEV(\"input\", {\n                  id: \"firstname\",\n                  type: \"text\",\n                  value: firstname,\n                  onChange: handlefirstnameChange\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 159,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 157,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n                children: [\"Last Name:\", /*#__PURE__*/_jsxDEV(\"input\", {\n                  id: \"lastname\",\n                  type: \"text\",\n                  value: lastname,\n                  onChange: handlelastnameChange\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 166,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 164,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n                children: [\"Email:\", /*#__PURE__*/_jsxDEV(\"input\", {\n                  id: \"email\",\n                  type: \"text\",\n                  value: username,\n                  onChange: handleUsernameChange\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 173,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 171,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n                children: [\"Password:\", /*#__PURE__*/_jsxDEV(\"input\", {\n                  id: \"password\",\n                  type: \"password\",\n                  value: password,\n                  onChange: handlePasswordChange\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 180,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 178,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n                children: [\"Confirm Password:\", /*#__PURE__*/_jsxDEV(\"input\", {\n                  id: \"password\",\n                  type: \"password\",\n                  value: confirmPassword,\n                  onChange: handleConfirmPasswordChange\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 187,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 185,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n                className: \"password-requirements\",\n                children: \"Requirements: At least 8 characters, no parts of your username\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 192,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n                className: \"formSubmitButton\",\n                type: \"submit\",\n                children: [\"Sign Up\\xA0\\xA0\", /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {\n                  icon: \"user-plus\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 197,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 195,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 156,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 154,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 153,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 151,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"spacer\",\n        children: /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"text-container\",\n          children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n            children: \"Get started with PipIt\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 206,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"h5\", {\n            children: \"Track bugs and usabilty issues\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 207,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n            className: \"signUpForm-show-button\",\n            onClick: toggleSignInFormVisible,\n            children: \"Sign up\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 208,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 205,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 204,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"signInForm\",\n        children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n          children: \"Sign in to PipIt\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 215,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n          onSubmit: handleSignInFormSubmit,\n          children: [/*#__PURE__*/_jsxDEV(\"label\", {\n            children: [\"Email:\", /*#__PURE__*/_jsxDEV(\"input\", {\n              id: \"username\",\n              type: \"text\",\n              value: signUpFormVisibilityState ? null : username,\n              onChange: handleUsernameChange\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 219,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 217,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n            children: [\"Password:\", /*#__PURE__*/_jsxDEV(\"input\", {\n              id: \"password\",\n              type: \"password\",\n              value: signUpFormVisibilityState ? null : password,\n              onChange: handlePasswordChange\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 226,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 224,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n            className: \"formSubmitButton\",\n            type: \"submit\",\n            children: [\"Sign in\\xA0\\xA0\", /*#__PURE__*/_jsxDEV(FontAwesomeIcon, {\n              icon: \"sign-in-alt\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 233,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 231,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 216,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"password-forgot-prompt\",\n          children: /*#__PURE__*/_jsxDEV(\"span\", {\n            children: /*#__PURE__*/_jsxDEV(\"a\", {\n              onClick: handlePasswordReset,\n              children: \"Forgot password\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 238,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 237,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 236,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 214,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 149,\n      columnNumber: 7\n    }, this);\n  } else {\n    return /*#__PURE__*/_jsxDEV(Redirect, {\n      to: \"/home\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 245,\n      columnNumber: 12\n    }, this);\n  }\n};\n\n_s(SignUp, \"1p9yGbAE7v6t+7cbmU/MfJMp/io=\", false, function () {\n  return [useOktaAuth];\n});\n\n_c = SignUp;\nexport default SignUp;\n\nvar _c;\n\n$RefreshReg$(_c, \"SignUp\");","map":{"version":3,"sources":["C:/Users/Bruger/Desktop/Web-projects/pipit/client/src/pages/login/Login.jsx"],"names":["React","useState","useEffect","useRef","Redirect","useOktaAuth","FontAwesomeIcon","NavLink","config","SignUp","authState","oktaAuth","sessionToken","setSessionToken","signUpFormRef","signUpFormVisibilityState","showSignUpForm","toggleSignInFormVisible","firstname","setfirstname","lastname","setlastname","username","setUsername","password","setPassword","confirmPassword","setConfirmPassword","pageClickEvent","e","console","log","current","contains","target","window","addEventListener","removeEventListener","userInputData","JSON","stringify","email","loginRequestOptions","method","body","resetPasswordRequestOptions","handleSignUpFormSubmit","preventDefault","alert","length","handleSignInFormSubmit","signInWithCredentials","then","res","signInWithRedirect","originalUri","catch","err","handlefirstnameChange","value","handlelastnameChange","handleUsernameChange","handlePasswordChange","handleConfirmPasswordChange","handlePasswordReset","fetch","serviceAPI","resetPasswordURL","ok","Promise","reject","isAuthenticated"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\r\nimport { Redirect } from 'react-router-dom'\r\nimport { useOktaAuth } from '@okta/okta-react';\r\nimport \"./Login.css\"\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { NavLink } from 'react-router-dom';\r\nimport config from \"../../config\"\r\n\r\nconst SignUp = () => {\r\n  const { authState, oktaAuth } = useOktaAuth();\r\n  const [sessionToken, setSessionToken] = useState()\r\n\r\n  const signUpFormRef = useRef(null);\r\n  const [signUpFormVisibilityState, showSignUpForm] = useState(false)\r\n  const toggleSignInFormVisible = () => showSignUpForm(!signUpFormVisibilityState)\r\n\r\n  const [firstname, setfirstname] = useState('')\r\n  const [lastname, setlastname] = useState('')\r\n  const [username, setUsername] = useState('');\r\n  const [password, setPassword] = useState('');\r\n  const [confirmPassword, setConfirmPassword] = useState('');\r\n\r\n  useEffect(() => {\r\n    const pageClickEvent = (e) => {\r\n      console.log(\"Click\")\r\n      if (signUpFormRef.current !== null && !signUpFormRef.current.contains(e.target)) {\r\n        console.log(\"Form visible: \" + signUpFormVisibilityState)\r\n        toggleSignInFormVisible()\r\n      }\r\n    };\r\n\r\n    // If the item is active (ie open) then listen for clicks\r\n    if (signUpFormVisibilityState) {\r\n      console.log(\"Add eventlistener\")\r\n      window.addEventListener('click', pageClickEvent);\r\n    }\r\n\r\n    return () => {\r\n      console.log(\"Remove eventlistener\")\r\n      window.removeEventListener('click', pageClickEvent);\r\n    }\r\n\r\n  }, [signUpFormVisibilityState]);\r\n\r\n  const userInputData = JSON.stringify({\r\n    firstname: `${firstname}`,\r\n    lastname: `${lastname}`,\r\n    email: `${username}`,\r\n    password: `${password}`\r\n  })\r\n\r\n  const loginRequestOptions = {\r\n    method: 'POST',\r\n    body: userInputData\r\n  };\r\n\r\n  const resetPasswordRequestOptions = {\r\n    method: 'PUT',\r\n    body: userInputData\r\n  }\r\n\r\n  const handleSignUpFormSubmit = (e) => {\r\n    e.preventDefault();\r\n\r\n    if (!password || !confirmPassword) {\r\n      window.alert(\"A password field is blank\")\r\n      return\r\n    }\r\n\r\n    if (!confirmPassword.length >= 7) {\r\n      window.alert(\"Password must consist of 8 characters or more\")\r\n      return\r\n    }\r\n\r\n    if (password == confirmPassword) {\r\n      // fetch(config.serviceAPI.createNewUserURL, loginRequestOptions)\r\n      //   .then((res) => {\r\n      //     if (!res.ok) {\r\n      //       window.alert(\"Error\")\r\n      //       Promise.reject(\"\")\r\n      //       return\r\n      //     }\r\n      //     if (res.ok) {\r\n      //       handleSignInFormSubmit(e)\r\n      //     }\r\n      //   })\r\n    }\r\n  }\r\n\r\n  const handleSignInFormSubmit = (e) => {\r\n    e.preventDefault();\r\n\r\n    oktaAuth.signInWithCredentials({ username, password })\r\n      .then(res => {\r\n        const sessionToken = res.sessionToken;\r\n        setSessionToken(sessionToken);\r\n        // sessionToken is a one-use token, so make sure this is only called once\r\n        oktaAuth.signInWithRedirect({ sessionToken, originalUri: '/home' });\r\n      })\r\n      .catch(err => console.log('Found an error', err));\r\n  };\r\n\r\n  const handlefirstnameChange = (e) => {\r\n    setfirstname(e.target.value)\r\n  }\r\n\r\n  const handlelastnameChange = (e) => {\r\n    setlastname(e.target.value)\r\n  }\r\n\r\n  const handleUsernameChange = (e) => {\r\n    setUsername(e.target.value);\r\n  };\r\n\r\n  const handlePasswordChange = (e) => {\r\n    setPassword(e.target.value)\r\n  }\r\n\r\n  const handleConfirmPasswordChange = (e) => {\r\n    setConfirmPassword(e.target.value)\r\n  }\r\n\r\n  if (sessionToken) {\r\n    // Hide form while sessionToken is converted into id/access tokens\r\n    return null;\r\n  }\r\n\r\n  const handlePasswordReset = () => {\r\n    if (!username == '') {\r\n      fetch(config.serviceAPI.resetPasswordURL, resetPasswordRequestOptions)\r\n        .then((res) => {\r\n          if (!res.ok) {\r\n            window.alert(\"Error: something went wrong\")\r\n            Promise.reject(\"\")\r\n            return\r\n          }\r\n          if (res.ok) {\r\n            // do something\r\n          }\r\n        })\r\n    }\r\n    else {\r\n      window.alert(\"Please enter a valid email into the login form\")\r\n    }\r\n  }\r\n\r\n  if (!authState || !authState.isAuthenticated) {\r\n    return (\r\n      <div className=\"pageContainer\">\r\n        {/* The Modal */}\r\n        <div className={`modal ${signUpFormVisibilityState ? \"active\" : \"inactive\"}`}>\r\n\r\n          <div ref={signUpFormRef} className=\"modal-content\">\r\n            <div className=\"signUpForm\">\r\n              <h2>Sign Up</h2>\r\n              <form onSubmit={handleSignUpFormSubmit}>\r\n                <label>\r\n                  First name:\r\n                  <input\r\n                    id=\"firstname\" type=\"text\"\r\n                    value={firstname}\r\n                    onChange={handlefirstnameChange} />\r\n                </label>\r\n                <label>\r\n                  Last Name:\r\n                  <input\r\n                    id=\"lastname\" type=\"text\"\r\n                    value={lastname}\r\n                    onChange={handlelastnameChange} />\r\n                </label>\r\n                <label>\r\n                  Email:\r\n                  <input\r\n                    id=\"email\" type=\"text\"\r\n                    value={username}\r\n                    onChange={handleUsernameChange} />\r\n                </label>\r\n                <label>\r\n                  Password:\r\n                  <input\r\n                    id=\"password\" type=\"password\"\r\n                    value={password}\r\n                    onChange={handlePasswordChange} />\r\n                </label>\r\n                <label>\r\n                  Confirm Password:\r\n                  <input\r\n                    id=\"password\" type=\"password\"\r\n                    value={confirmPassword}\r\n                    onChange={handleConfirmPasswordChange} />\r\n                </label>\r\n                <label className=\"password-requirements\">\r\n                  Requirements: At least 8 characters, no parts of your username\r\n                </label>\r\n                <button className=\"formSubmitButton\" type=\"submit\">\r\n                  Sign Up&nbsp;&nbsp;\r\n                  <FontAwesomeIcon icon=\"user-plus\"></FontAwesomeIcon>\r\n                </button>\r\n              </form>\r\n            </div>\r\n          </div>\r\n\r\n        </div>\r\n        <div className=\"spacer\">\r\n          <div className=\"text-container\">\r\n            <h1>Get started with PipIt</h1>\r\n            <h5>Track bugs and usabilty issues</h5>\r\n            <button className=\"signUpForm-show-button\" onClick={toggleSignInFormVisible}>\r\n              Sign up\r\n            </button>\r\n          </div>\r\n        </div>\r\n\r\n        <div className=\"signInForm\">\r\n          <h2>Sign in to PipIt</h2>\r\n          <form onSubmit={handleSignInFormSubmit}>\r\n            <label>\r\n              Email:\r\n              <input\r\n                id=\"username\" type=\"text\"\r\n                value={signUpFormVisibilityState ? null : username}\r\n                onChange={handleUsernameChange} />\r\n            </label>\r\n            <label>\r\n              Password:\r\n              <input\r\n                id=\"password\" type=\"password\"\r\n                value={signUpFormVisibilityState ? null : password}\r\n                onChange={handlePasswordChange} />\r\n            </label>\r\n            <button className=\"formSubmitButton\" type=\"submit\">\r\n              Sign in&nbsp;&nbsp;\r\n              <FontAwesomeIcon icon=\"sign-in-alt\"></FontAwesomeIcon>\r\n            </button>\r\n          </form>\r\n          <div className=\"password-forgot-prompt\">\r\n            <span>\r\n              <a onClick={handlePasswordReset}>Forgot password</a>\r\n            </span>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    )\r\n  } else {\r\n    return <Redirect to=\"/home\" />\r\n  }\r\n}\r\n\r\nexport default SignUp"]},"metadata":{},"sourceType":"module"}