diff --git a/README.md b/README.md
index 8deab22..94bb303 100644
--- a/README.md
+++ b/README.md
@@ -3,3 +3,4 @@
- React
- SCSS
- react-router-dom
+- Axios
diff --git a/package-lock.json b/package-lock.json
index 66d9e16..335ce0c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"@testing-library/jest-dom": "5.16.1",
"@testing-library/react": "12.1.2",
"@testing-library/user-event": "13.5.0",
+ "axios": "^0.26.0",
"node-sass": "^7.0.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
@@ -4460,6 +4461,14 @@
"node": ">=4"
}
},
+ "node_modules/axios": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
+ "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
+ "dependencies": {
+ "follow-redirects": "^1.14.8"
+ }
+ },
"node_modules/axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -7656,9 +7665,9 @@
"integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg=="
},
"node_modules/follow-redirects": {
- "version": "1.14.7",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
- "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
+ "version": "1.14.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
"funding": [
{
"type": "individual",
@@ -20499,6 +20508,14 @@
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.0.tgz",
"integrity": "sha512-btWy2rze3NnxSSxb7LtNhPYYFrRoFBfjiGzmSc/5Hu47wApO2KNXjP/w7Nv2Uz/Fyr/pfEiwOkcXhDxu0jz5FA=="
},
+ "axios": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
+ "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
+ "requires": {
+ "follow-redirects": "^1.14.8"
+ }
+ },
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
@@ -22886,9 +22903,9 @@
"integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg=="
},
"follow-redirects": {
- "version": "1.14.7",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
- "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
+ "version": "1.14.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
},
"forever-agent": {
"version": "0.6.1",
diff --git a/package.json b/package.json
index a751a0d..4d355ca 100644
--- a/package.json
+++ b/package.json
@@ -6,6 +6,7 @@
"@testing-library/jest-dom": "5.16.1",
"@testing-library/react": "12.1.2",
"@testing-library/user-event": "13.5.0",
+ "axios": "^0.26.0",
"node-sass": "^7.0.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
diff --git a/src/App.js b/src/App.js
index 8753272..90a1865 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,6 +1,10 @@
// IMPORT MODULES
-import React from "react";
+import React, { useState, useEffect, useMemo } from "react";
import { Routes, Route } from "react-router-dom";
+import { UserContext } from "./backend/UserContext";
+
+// IMPORT FUNCTIONS
+import { getUserInfo } from "./backend/getUserInfo";
// IMPORT STYLES
import "./styles/style.scss";
@@ -20,20 +24,34 @@ import SignUp from "./pages/SignUp";
import Home from "./pages/Home";
const App = () => {
+ const loginUrl = "http://95.85.124.85:8000/api/me";
+ const [user, setUser] = useState();
+ const providerValue = useMemo(() => ({ user, setUser }), [user, setUser]);
+ useEffect(() => {
+ const userToken = localStorage.getItem("userToken");
+ if (userToken) {
+ getUserInfo(loginUrl, userToken, setUser);
+ }
+ }, []);
return (
-
-
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
- } />
-
-
+
+
+
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ }
+ />
+ } />
+ } />
+
+
+
);
};
diff --git a/src/backend/UserContext.js b/src/backend/UserContext.js
new file mode 100644
index 0000000..8e9c932
--- /dev/null
+++ b/src/backend/UserContext.js
@@ -0,0 +1,4 @@
+// IMPORT MODULES
+import { createContext } from "react";
+
+export const UserContext = createContext(null);
diff --git a/src/backend/getUserInfo.js b/src/backend/getUserInfo.js
new file mode 100644
index 0000000..817c88b
--- /dev/null
+++ b/src/backend/getUserInfo.js
@@ -0,0 +1,15 @@
+// IMPORT MODULES
+import axios from "axios";
+
+export const getUserInfo = (url, userToken, setState) => {
+ axios.get(`${url}?token=${userToken}`).then((res, err) => {
+ if (err) {
+ return `Failed to fetch user info: ${err}`;
+ }
+ if (setState) {
+ setState(res.data);
+ } else {
+ return res.data;
+ }
+ });
+};
diff --git a/src/backend/loginUser.js b/src/backend/loginUser.js
new file mode 100644
index 0000000..b884c44
--- /dev/null
+++ b/src/backend/loginUser.js
@@ -0,0 +1,11 @@
+// IMPORT MODULES
+import axios from "axios";
+
+export const loginUser = (url, formData, setState, tokenSaved) => {
+ axios.post(url, formData).then((res, err) => {
+ setState(res.data.user);
+ if (tokenSaved) {
+ localStorage.setItem("userToken", res.data.token);
+ }
+ });
+};
diff --git a/src/components/sign/SignForm.js b/src/components/sign/SignForm.js
index c863816..1eb3ec7 100644
--- a/src/components/sign/SignForm.js
+++ b/src/components/sign/SignForm.js
@@ -6,15 +6,16 @@ import { Link } from "react-router-dom";
import logout from "../../icons/logout.svg";
import up from "../../icons/clipboard.svg";
-const SignForm = ({ setRecoveryOpen }) => {
+const SignForm = ({ setRecoveryOpen, setFormData }) => {
+ const data = new FormData();
const [inputValid, setInputValid] = useState({
- login: false,
- password: false,
+ login: null,
+ password: null,
});
const [btnEnabled, setBtnEnabled] = useState(false);
useEffect(() => {
- if (inputValid.login === true && inputValid.password === true) {
+ if (inputValid.login && inputValid.password) {
setBtnEnabled(true);
} else {
setBtnEnabled(false);
@@ -38,9 +39,10 @@ const SignForm = ({ setRecoveryOpen }) => {
name="login"
onChange={(e) => {
if (e.target.value !== "") {
- setInputValid({ ...inputValid, login: true });
+ setInputValid({ ...inputValid, login: e.target.value });
+ data.append("username", e.target.value);
} else {
- setInputValid({ ...inputValid, login: false });
+ setInputValid({ ...inputValid, login: null });
}
}}
/>
@@ -54,9 +56,9 @@ const SignForm = ({ setRecoveryOpen }) => {
id="password"
onChange={(e) => {
if (e.target.value.length >= 8) {
- setInputValid({ ...inputValid, password: true });
+ setInputValid({ ...inputValid, password: e.target.value });
} else {
- setInputValid({ ...inputValid, password: false });
+ setInputValid({ ...inputValid, password: null });
}
}}
/>
@@ -75,7 +77,16 @@ const SignForm = ({ setRecoveryOpen }) => {
-