From 961574b83654dc4af1804345de98b7433a48b125 Mon Sep 17 00:00:00 2001 From: Joseph Nelson Date: Sun, 21 Jun 2026 23:05:22 -0700 Subject: [PATCH] added details for login page --- src/constants/index.js | 3 ++ src/pages/login/index.js | 74 +++++++++++++++++++++++++++++++++++++++ src/pages/login/style.css | 50 ++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 src/constants/index.js create mode 100644 src/pages/login/index.js create mode 100644 src/pages/login/style.css diff --git a/src/constants/index.js b/src/constants/index.js new file mode 100644 index 0000000..25109c2 --- /dev/null +++ b/src/constants/index.js @@ -0,0 +1,3 @@ +export default { + baseUrl: "http://192.168.68.150:8469" +} \ No newline at end of file diff --git a/src/pages/login/index.js b/src/pages/login/index.js new file mode 100644 index 0000000..9ee0403 --- /dev/null +++ b/src/pages/login/index.js @@ -0,0 +1,74 @@ +import React from 'react'; +import './style.css'; + +import { baseUrl } from "../../constants"; + +class Login extends React.Component { + state = { + username: '', + password: '' + }; + + handleChange = (event) => { + this.setState({ [event.target.name]: event.target.value }); + }; + + handleSubmit = (event) => { + event.preventDefault(); + const { username, password } = this.state; + fetch(`${baseUrl}/auth/login`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ username, password }) + }) + .then(response => response.json()) + .then(data => { + if (data.token) { + // store the token in local storage or state + localStorage.setItem('token', data.token); + this.props.history.push('/dashboard'); + } else { + // handle login failure + alert('Invalid username or password'); + } + }) + .catch(error => console.error(error)); + }; + + render() { + return ( +
+
+

Login

+
+
+ + +
+
+ + +
+ +
+
+
+ ); + } +} + +export default Login; diff --git a/src/pages/login/style.css b/src/pages/login/style.css new file mode 100644 index 0000000..c6ce2ad --- /dev/null +++ b/src/pages/login/style.css @@ -0,0 +1,50 @@ +.login-page { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + background-color: #f4f4f4; +} + +.login-container { + background-color: #fff; + padding: 2rem; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + width: 300px; + text-align: center; +} + +.login-container h2 { + margin-bottom: 1rem; +} + +.login-form { + display: flex; + flex-direction: column; +} + +.login-form label { + margin-top: 0.5rem; +} + +.login-form input { + padding: 0.75rem; + border: 1px solid #ccc; + border-radius: 4px; + font-size: 16px; +} + +.login-form button { + background-color: #28a745; + color: white; + padding: 0.75rem; + border: none; + border-radius: 4px; + cursor: pointer; + margin-top: 1rem; +} + +.login-form button:hover { + background-color: #218838; +} -- 2.52.0