diff --git a/src/App.tsx b/src/App.tsx index 02d7f8f..e15b9c9 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,7 @@ // Modules +import { useMemo, useState, useEffect } from "react"; import { Routes, Route } from "react-router-dom"; +import { UserContext } from "./context/UserContext"; // Style import "./assets/styles/style.scss"; @@ -8,12 +10,29 @@ import "./assets/styles/style.scss"; import Login from "./pages/Login"; const App = () => { + const [user, setUser] = useState({ + username: "", + accessLevel: "", + }); + + useEffect(() => { + const userData = localStorage.getItem("userData"); + + if (userData) { + setUser(JSON.parse(userData)); + } + }, []); + + const userValue = useMemo(() => ({ user, setUser }), [user, setUser]); + return ( -
- - } /> - -
+ +
+ + } /> + +
+
); }; diff --git a/src/context/UserContext.tsx b/src/context/UserContext.tsx new file mode 100644 index 0000000..d01c3d8 --- /dev/null +++ b/src/context/UserContext.tsx @@ -0,0 +1,4 @@ +// Modules +import { createContext } from "react"; + +export const UserContext: any = createContext(null); diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index 9b5c296..07e2994 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -1,10 +1,14 @@ -import React, { useState, useEffect } from "react"; +// Modules +import React, { useState, useEffect, useContext } from "react"; +import { UserContext } from "../context/UserContext"; +import { useNavigate } from "react-router-dom"; const Login = () => { const cred: Record = { - username: "admin@2022", + username: "admin_2022", password: "backpackadmin", }; + const [valid, setValid] = useState({ username: "", password: "", @@ -12,6 +16,9 @@ const Login = () => { valid: false, }); + const { user, setUser } = useContext(UserContext); + const navigate = useNavigate(); + useEffect(() => { if (valid.username === cred.username && valid.password === cred.password) { setValid({ ...valid, valid: true }); @@ -20,6 +27,12 @@ const Login = () => { } }, [valid.username, valid.password]); + useEffect(() => { + if (user.username) { + navigate("/"); + } + }, [user]); + return (
@@ -75,8 +88,14 @@ const Login = () => {