aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/Dashboard.js12
-rw-r--r--src/pages/Login.js65
-rw-r--r--src/pages/SignUp.js52
3 files changed, 116 insertions, 13 deletions
diff --git a/src/pages/Dashboard.js b/src/pages/Dashboard.js
new file mode 100644
index 0000000..c7f136d
--- /dev/null
+++ b/src/pages/Dashboard.js
@@ -0,0 +1,12 @@
+import Sidebar from "../components/Sidebar";
+
+const Dashboard = () => {
+ return (
+ <>
+ <Sidebar />
+ </>
+ );
+}
+
+
+export default Dashboard; \ No newline at end of file
diff --git a/src/pages/Login.js b/src/pages/Login.js
index 700de0d..2aa90f5 100644
--- a/src/pages/Login.js
+++ b/src/pages/Login.js
@@ -1,20 +1,73 @@
-import React from "react";
+import React, {useContext, useState} from "react";
import FlexibleForm from "../components/FlexibleForm";
import benefitTwoImg from "../assets/img/benefit-two.png";
+import { AuthContext } from '../providers/AuthContext';
+import {useNavigate} from "react-router-dom";
const Login = () => {
+ const navigate = useNavigate();
+ const { login } = useContext(AuthContext);
+ const [formData, setFormData] = useState({
+ email: "",
+ password: "",
+ });
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setFormData((prevData) => ({
+ ...prevData,
+ [name]: value,
+ }));
+ };
+
+ const handleSubmit = async (event) => {
+ event.preventDefault();
+ const { email, password } = formData;
+ const basicAuth = btoa(`${email}:${password}`)
+
+ try {
+ const response = await fetch(process.env.REACT_APP_LOGIN_ROUTE, {
+ method: "GET",
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Authorization': `Basic ${basicAuth}`,
+ },
+ });
+ if (response.ok) {
+ const jwt = await response.text();
+ const tokenParts = jwt.split(".")
+ const decodedPayload = atob(tokenParts[1]);
+ const payload = JSON.parse(decodedPayload);
+ const userId = payload.sub;
+
+ const userDetailsResponse = await fetch(process.env.REACT_APP_REGISTER_ROUTE + '/' + userId , {
+ method: "GET",
+ });
+
+ if (userDetailsResponse.ok) {
+ const userDetails = await userDetailsResponse.json();
+ login(userDetails, jwt);
+ navigate("/")
+
+ } else { console.error("Failed to fetch details") }
+
+ } else { console.error("Login failed") }
+
+ } catch (error) {
+ console.error('Error submitting form:', error);
+ }
+ }
+
return (
<>
<FlexibleForm
- onSuccess={''}
+ onFormSubmit={handleSubmit}
data={{
image: benefitTwoImg,
title: "Sign in to your account",
subtitle: "Sign in please",
- formAction: "/login",
- formMethod: "POST",
formFields: [
- { label: "Email address", name: "email", type: "email", autoComplete: "email", required: true },
- { label: "Password", name: "password", type: "password", autoComplete: "current-password", required: true },
+ { label: "Email address", name: "email", type: "email", autoComplete: "email", required: true, value: formData.email, onChange: handleChange },
+ { label: "Password", name: "password", type: "password", autoComplete: "current-password", required: true, value: formData.password, onChange: handleChange },
],
ctaText: "Login",
ctaLink: { text: "Don't have an account?", linkText: "Create an account instead!", url: "/sign-up" },
diff --git a/src/pages/SignUp.js b/src/pages/SignUp.js
index 038b75c..11ab367 100644
--- a/src/pages/SignUp.js
+++ b/src/pages/SignUp.js
@@ -1,23 +1,61 @@
-import React from "react";
+import React, {useState} from "react";
+import { useNavigate } from "react-router-dom";
import FlexibleForm from "../components/FlexibleForm";
import benefitTwoImg from "../assets/img/benefit-two.png";
const SignUp = () => {
+ const navigate = useNavigate();
+
+ const [formData, setFormData] = useState({
+ name: "",
+ email: "",
+ password: "",
+ });
+
+ const handleChange = (e) => {
+ const { name, value } = e.target;
+ setFormData((prevData) => ({
+ ...prevData,
+ [name]: value,
+ }));
+ };
+
+
+ const handleSubmit = async (event) => {
+ event.preventDefault();
+
+ try {
+ const response = await fetch(process.env.REACT_APP_REGISTER_ROUTE, {
+ method: "POST",
+ body: JSON.stringify(formData),
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error(await response.text());
+ }
+
+ console.log('Form submitted successfully');
+ navigate("/login");
+ } catch (error) {
+ console.error('Error submitting form:', error);
+ }
+ }
return (
<>
<FlexibleForm
- onSuccess={''}
+ onFormSubmit={handleSubmit}
data={{
image: benefitTwoImg,
title: "Create your account",
subtitle: "maybe edit this text hmm",
- formAction: "/register",
- formMethod: "POST",
formFields: [
- { label: "Full Name", name: "name", type: "text", autoComplete: "name", required: true },
- { label: "Email address", name: "email", type: "email", autoComplete: "email", required: true },
- { label: "Password", name: "password", type: "password", autoComplete: "new-password", required: true },
+ { label: "Full Name", name: "name", type: "text", autoComplete: "name", required: true, value: formData.name, onChange: handleChange },
+ { label: "Email address", name: "email", type: "email", autoComplete: "email", required: true, value: formData.email, onChange: handleChange },
+ { label: "Password", name: "password", type: "password", autoComplete: "new-password", required: true, value: formData.password, onChange: handleChange },
],
ctaText: "Create Account",
ctaLink: { text: "Already have an account?", linkText: "Log in instead!", url: "/login" },