diff --git a/src/components/Login.jsx b/src/components/Login.jsx new file mode 100644 index 0000000..1e2153b --- /dev/null +++ b/src/components/Login.jsx @@ -0,0 +1,96 @@ +import React from "react"; +import { useGlobalContext } from "./context"; +import { Button, Container, Form } from "react-bootstrap"; +import { useCookies } from "react-cookie"; +import axios from "axios"; +import { useNavigate } from "react-router-dom"; + +const Login = () => { + const { bgColor, setBgColor } = useGlobalContext(); + const [cookies, setCookie] = useCookies(["jwtToken"]); + const { dark, setDark } = useGlobalContext(); + const navigate = useNavigate(); + + function login(event) { + event.preventDefault(); + const userData = { + username: event.currentTarget.elements.formUserName.value, + password: event.currentTarget.elements.formPassword.value, + }; + try { + axios + .post( + "https://gameapiauth-acakapc8cxadgtf5.swedencentral-01.azurewebsites.net/api/Authentication/login", + { + userName: userData.username, + password: userData.password, + } + ) + .then((response) => { + setCookie("jwtToken", response.data.jwtToken, { path: "/" }); + navigate("/"); + }); + } catch (error) { + console.log("Error logging in: " + error); + } + } + + return ( +
+ + {dark == "dark" ? ( +

Login

+ ) : ( +

Login

+ )} + +
+
+
+ + + {dark == "dark" ? ( + UserName + ) : ( + UserName + )} + + + + + + {dark == "dark" ? ( + Password + ) : ( + Password + )} + + + + +
+
+
+ ); +}; + +export default Login; diff --git a/src/components/NavbarComp.jsx b/src/components/NavbarComp.jsx index f4c6e36..3e24a18 100644 --- a/src/components/NavbarComp.jsx +++ b/src/components/NavbarComp.jsx @@ -35,6 +35,9 @@ const NavbarComp = () => { {cookies.jwtToken == "" || cookies.jwtToken == null ?( Register ) : "" } + {cookies.jwtToken == "" || cookies.jwtToken == null ?( + Login + ) : "" } diff --git a/src/components/Register.jsx b/src/components/Register.jsx index 885592e..3c9d526 100644 --- a/src/components/Register.jsx +++ b/src/components/Register.jsx @@ -3,13 +3,15 @@ import { useGlobalContext } from "./context"; import { Button, Container, Form } from "react-bootstrap"; import { useCookies } from "react-cookie"; import axios from "axios"; +import { useNavigate } from "react-router-dom"; const Register = () => { const { bgColor, setBgColor } = useGlobalContext(); const [cookies, setCookie] = useCookies(["jwtToken"]); const { dark, setDark } = useGlobalContext(); + const navigate = useNavigate(); + - function register(event) { event.preventDefault(); const userData = { diff --git a/src/main.jsx b/src/main.jsx index 0b7f4c4..2ac31be 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -10,6 +10,7 @@ import { CookiesProvider } from "react-cookie"; import GamePage from "./components/GamePage"; import { GlobalProvider } from "./components/context.jsx"; import Register from "./components/Register.jsx"; +import Login from "./components/Login.jsx"; createRoot(document.getElementById("root")).render( @@ -22,6 +23,7 @@ createRoot(document.getElementById("root")).render( } /> } /> } /> + } />