From 4fa41fc31ec04d213014f6bac3f433e12d414005 Mon Sep 17 00:00:00 2001 From: Citronskal Date: Mon, 20 May 2024 21:02:04 +0200 Subject: [PATCH 01/31] add Login page --- frontend/public/login.png | Bin 0 -> 18573 bytes frontend/src/App.jsx | 9 +++- frontend/src/Pages/Login.css | 77 ++++++++++++++++++++++++++++++++++ frontend/src/Pages/Login.jsx | 60 ++++++++++++++++++++++++++ frontend/src/Pages/Signup.css | 0 frontend/src/Pages/Signup.jsx | 0 package.json | 6 ++- 7 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 frontend/public/login.png create mode 100644 frontend/src/Pages/Login.css create mode 100644 frontend/src/Pages/Login.jsx create mode 100644 frontend/src/Pages/Signup.css create mode 100644 frontend/src/Pages/Signup.jsx diff --git a/frontend/public/login.png b/frontend/public/login.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4f84df3fdfe0bf9482ca63f64db0d49f1c3404 GIT binary patch literal 18573 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 FV1nlM9RC0S literal 0 HcmV?d00001 diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 1091d4310..d3e3fc20f 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,3 +1,10 @@ +import { Login } from "./Pages/Login"; + + export const App = () => { - return
Find me in src/app.jsx!
; + return ( + <> + + + ); }; diff --git a/frontend/src/Pages/Login.css b/frontend/src/Pages/Login.css new file mode 100644 index 000000000..83ec375ba --- /dev/null +++ b/frontend/src/Pages/Login.css @@ -0,0 +1,77 @@ +/* General styles for the form to center everything */ +body { + background-color: #e5e5e5; + font-family: "Poppins", sans-serif; + font-weight: 300; +} + +form { + align-items: center; + padding: 20px; + margin: auto; + max-width: 300px; +} + +/* Styles for the icon image */ +.login-icon { + width: 100px; + margin-bottom: 20px; +} + +/* Styles for headers inside the form */ +h2 { + text-align: center; + margin-bottom: 20px; +} + +/* Styles for form input containers */ +div { + width: 100%; + margin-bottom: 10px; +} + +/* Styles for labels */ +label { + display: block; + text-align: left; + margin-bottom: 5px; +} + +/* Styles for input fields to expand to full width of their container */ +input[type="email"], +input[type="password"] { + width: 100%; + padding: 8px; + box-sizing: border-box; +} + +/* Styles for the submit button */ +button { + width: 100%; + padding: 10px; + background-color: #ffd935; + color: #333; + border: none; + border-radius: 5px; + cursor: pointer; + border-radius: 30px; +} + +/* Additional styling for hover effect on button */ +button:hover { + background-color: #0056b3; +} + +/* Centering paragraph below the form */ +.login-form p { + text-align: center; + margin-top: 20px; +} + +p { + text-align: center; +} + +.login-form { + margin-top: 30px; +} \ No newline at end of file diff --git a/frontend/src/Pages/Login.jsx b/frontend/src/Pages/Login.jsx new file mode 100644 index 000000000..dc14a4825 --- /dev/null +++ b/frontend/src/Pages/Login.jsx @@ -0,0 +1,60 @@ +import "./Login.css"; +import { useState, useEffect } from "react"; +import axios from "axios"; +import { useNavigate } from "react-router-dom"; + +export const Login = () => { + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const navigate = useNavigate(); + const handleSubmit = async (event) => { + event.preventDefault(); + const userInfo = { + username: "kminchelle", + password: "0lelplR", + }; + const { data } = await axios.post( + "https://dummyjson.com/auth/login", + userInfo + ); + localStorage.setItem("Net-Token", data.token); + navigate("/"); + }; + useEffect(() => { + if (localStorage.getItem("Net-Token")) { + navigate("/"); + } + }, []); + + return ( + <> + +
+ +

Sign up / Login

+
+ + setEmail(e.target.value)} + required + /> +
+
+ + setPassword(e.target.value)} + required + /> +
+ +
+

Haven't signed up yet?Click here to sign up

+ + ); +}; diff --git a/frontend/src/Pages/Signup.css b/frontend/src/Pages/Signup.css new file mode 100644 index 000000000..e69de29bb diff --git a/frontend/src/Pages/Signup.jsx b/frontend/src/Pages/Signup.jsx new file mode 100644 index 000000000..e69de29bb diff --git a/package.json b/package.json index d774b8cc3..5597ab044 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,10 @@ "name": "project-auth-parent", "version": "1.0.0", "scripts": { - "postinstall": "npm install --prefix backend" + "postinstall": "npm install --prefix backend", + "dev": "vite" + }, + "devDependencies": { + "vite": "^5.2.11" } } From f07eb295debd3846e4d3e10127890b9a6cc7b388 Mon Sep 17 00:00:00 2001 From: Citronskal Date: Mon, 20 May 2024 21:42:51 +0200 Subject: [PATCH 02/31] added navbar --- frontend/package.json | 5 ++-- frontend/src/App.jsx | 10 ++++---- frontend/src/Pages/Login.css | 9 ++++--- frontend/src/Pages/Login.jsx | 6 ++--- frontend/src/Pages/NavBar.css | 45 +++++++++++++++++++++++++++++++++++ frontend/src/Pages/NavBar.jsx | 20 ++++++++++++++++ frontend/src/index.css | 5 ++++ 7 files changed, 87 insertions(+), 13 deletions(-) create mode 100644 frontend/src/Pages/NavBar.css create mode 100644 frontend/src/Pages/NavBar.jsx diff --git a/frontend/package.json b/frontend/package.json index e9c95b79f..4cfe6d78b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,12 +11,13 @@ }, "dependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "^6.23.1" }, "devDependencies": { "@types/react": "^18.2.15", "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", + "@vitejs/plugin-react": "^4.2.1", "eslint": "^8.45.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index d3e3fc20f..3423202bb 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,10 +1,12 @@ import { Login } from "./Pages/Login"; - +import { NavBar } from "./Pages/NavBar"; +import { BrowserRouter } from "react-router-dom"; export const App = () => { return ( - <> - - + + + + ); }; diff --git a/frontend/src/Pages/Login.css b/frontend/src/Pages/Login.css index 83ec375ba..43506e3e4 100644 --- a/frontend/src/Pages/Login.css +++ b/frontend/src/Pages/Login.css @@ -14,8 +14,10 @@ form { /* Styles for the icon image */ .login-icon { + display: flex; + justify-content: center; width: 100px; - margin-bottom: 20px; + margin: 0 auto 30px; } /* Styles for headers inside the form */ @@ -55,11 +57,12 @@ button { border-radius: 5px; cursor: pointer; border-radius: 30px; + font-size: 15px; } /* Additional styling for hover effect on button */ button:hover { - background-color: #0056b3; + background-color: #fe9c80; } /* Centering paragraph below the form */ @@ -74,4 +77,4 @@ p { .login-form { margin-top: 30px; -} \ No newline at end of file +} diff --git a/frontend/src/Pages/Login.jsx b/frontend/src/Pages/Login.jsx index dc14a4825..df61258b2 100644 --- a/frontend/src/Pages/Login.jsx +++ b/frontend/src/Pages/Login.jsx @@ -1,6 +1,5 @@ import "./Login.css"; import { useState, useEffect } from "react"; -import axios from "axios"; import { useNavigate } from "react-router-dom"; export const Login = () => { @@ -28,10 +27,9 @@ export const Login = () => { return ( <> - -
+ -

Sign up / Login

+

Login

{ + return ( + + ); +}; diff --git a/frontend/src/index.css b/frontend/src/index.css index 3e560a674..04a75b8db 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -10,4 +10,9 @@ code { font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; +} + +* { + margin:0; + border: 0; } \ No newline at end of file From 2c0bd1575a5d0ab8b8c9ae851925e9ccea0188e7 Mon Sep 17 00:00:00 2001 From: Citronskal Date: Mon, 20 May 2024 22:14:41 +0200 Subject: [PATCH 03/31] added sign up page --- frontend/public/signup.png | Bin 0 -> 20117 bytes frontend/src/App.jsx | 12 +++- frontend/src/Pages/NavBar.jsx | 2 +- frontend/src/Pages/Signup.css | 84 +++++++++++++++++++++++++++ frontend/src/Pages/Signup.jsx | 106 ++++++++++++++++++++++++++++++++++ 5 files changed, 200 insertions(+), 4 deletions(-) create mode 100644 frontend/public/signup.png diff --git a/frontend/public/signup.png b/frontend/public/signup.png new file mode 100644 index 0000000000000000000000000000000000000000..b839b5df92bd1c05ba9c7acb5acc05add467d1b5 GIT binary patch literal 20117 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 Js&@sS`#)WueU|_L literal 0 HcmV?d00001 diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 3423202bb..c9a2567f7 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,12 +1,18 @@ +import { BrowserRouter, Routes, Route } from "react-router-dom"; import { Login } from "./Pages/Login"; +import { Signup } from "./Pages/Signup"; import { NavBar } from "./Pages/NavBar"; -import { BrowserRouter } from "react-router-dom"; export const App = () => { return ( - - +
+ + + } /> + } /> + +
); }; diff --git a/frontend/src/Pages/NavBar.jsx b/frontend/src/Pages/NavBar.jsx index a714150ef..d8a4b28f5 100644 --- a/frontend/src/Pages/NavBar.jsx +++ b/frontend/src/Pages/NavBar.jsx @@ -6,7 +6,7 @@ export const NavBar = () => {
Authentication