diff --git a/Client/src/Pages/Auth/ForgotPassword.jsx b/Client/src/Pages/Auth/ForgotPassword.jsx index 86db72076..c7aca10c9 100644 --- a/Client/src/Pages/Auth/ForgotPassword.jsx +++ b/Client/src/Pages/Auth/ForgotPassword.jsx @@ -1,18 +1,17 @@ -import "./index.css"; -import background from "../../assets/Images/background_pattern_decorative.png"; -import Logomark from "../../assets/icons/key.svg?react"; -import ArrowBackRoundedIcon from "@mui/icons-material/ArrowBackRounded"; -import { useState } from "react"; -import { credentials } from "../../Validation/validation"; -import { useNavigate } from "react-router-dom"; -import Field from "../../Components/Inputs/Field"; +import { Box, Stack, Typography } from "@mui/material"; +import { useTheme } from "@emotion/react"; import { createToast } from "../../Utils/toastUtils"; import { useDispatch, useSelector } from "react-redux"; import { forgotPassword } from "../../Features/Auth/authSlice"; +import { useEffect, useState } from "react"; +import { credentials } from "../../Validation/validation"; +import { useNavigate } from "react-router-dom"; +import Field from "../../Components/Inputs/Field"; import ButtonSpinner from "../../Components/ButtonSpinner"; -import { Stack, Typography } from "@mui/material"; -import { useTheme } from "@emotion/react"; -import Button from "../../Components/Button"; +import Logo from "../../assets/icons/bwu-icon.svg?react"; +import Key from "../../assets/icons/key.svg?react"; +import background from "../../assets/Images/background_pattern_decorative.png"; +import "./index.css"; const ForgotPassword = () => { const navigate = useNavigate(); @@ -25,9 +24,10 @@ const ForgotPassword = () => { email: "", }); - const idMap = { - "forgot-password-email-input": "email", - }; + useEffect(() => { + const email = sessionStorage.getItem("email"); + email && setForm({ email: sessionStorage.getItem("email") }); + }, []); const handleSubmit = async (event) => { event.preventDefault(); @@ -40,11 +40,9 @@ const ForgotPassword = () => { error.details && error.details.length > 0 ? error.details[0].message : "Error validating data."; - setErrors(err); + setErrors({ email: err }); createToast({ - variant: "info", body: err, - hasIcon: false, }); } else { const action = await dispatch(forgotPassword(form)); @@ -71,72 +69,105 @@ const ForgotPassword = () => { }; const handleChange = (event) => { - const { value, id } = event.target; - const name = idMap[id]; - setForm((prev) => ({ - ...prev, - [name]: value, - })); + const { value } = event.target; + setForm({ email: value }); const { error } = credentials.validate( - { [name]: value }, + { email: value }, { abortEarly: false } ); - setErrors((prev) => { - const prevErrors = { ...prev }; - if (error) prevErrors[name] = error.details[0].message; - else delete prevErrors[name]; - return prevErrors; - }); + if (error) setErrors({ email: error.details[0].message }); + else delete errors.email; }; return ( -
+ background pattern -
- - - - Forgot password? - - - No worries, we'll send you reset instructions. - + + + BlueWave Uptime + + .MuiStack-root": { + border: 1, + borderRadius: theme.shape.borderRadius, + borderColor: theme.palette.otherColors.graishWhite, + backgroundColor: theme.palette.otherColors.white, + padding: { + xs: theme.gap.large, + sm: theme.gap.xl, + }, + }, + }} + > + + + + Forgot password? + + No worries, we'll send you reset instructions. + + + + + + + + - - - -
+ + + Go back to — + { + navigate("/login"); + }} + sx={{ userSelect: "none" }} + > + Log In + + + ); }; diff --git a/Client/src/Pages/Auth/Login.jsx b/Client/src/Pages/Auth/Login.jsx index eef972ec4..8f378286f 100644 --- a/Client/src/Pages/Auth/Login.jsx +++ b/Client/src/Pages/Auth/Login.jsx @@ -154,6 +154,13 @@ const StepTwo = ({ form, errors, onSubmit, onChange, onBack }) => { } }, []); + const handleNavigate = () => { + if (form.email !== "" && !errors.email) { + sessionStorage.setItem("email", form.email); + } + navigate("/forgot-password"); + }; + return ( <> @@ -209,7 +216,7 @@ const StepTwo = ({ form, errors, onSubmit, onChange, onBack }) => { component="span" ml={theme.gap.xs} sx={{ userSelect: "none" }} - onClick={() => navigate("/forgot-password")} + onClick={handleNavigate} > Reset password diff --git a/Client/src/Pages/Auth/index.css b/Client/src/Pages/Auth/index.css index 6814bdd6e..8a434b589 100644 --- a/Client/src/Pages/Auth/index.css +++ b/Client/src/Pages/Auth/index.css @@ -3,7 +3,6 @@ /* ////// */ .set-new-password-page, .password-confirmed-page, -.forgot-password-page, .check-email-page { display: flex; justify-content: center; @@ -11,7 +10,6 @@ } .set-new-password-page h1.MuiTypography-root, .password-confirmed-page h1.MuiTypography-root, -.forgot-password-page h1.MuiTypography-root, .check-email-page h1.MuiTypography-root { font-size: var(--env-var-font-size-large); color: var(--env-var-color-1); @@ -21,8 +19,6 @@ .set-new-password-page button, .password-confirmed-page p.MuiTypography-root, .password-confirmed-page button, -.forgot-password-page p.MuiTypography-root, -.forgot-password-page button, .check-email-page p.MuiTypography-root, .check-email-page button, .check-email-page span.MuiTypography-root { @@ -30,7 +26,6 @@ } .set-new-password-page button:not(.MuiIconButton-root), .password-confirmed-page button:not(.MuiIconButton-root), -.forgot-password-page button:not(.MuiIconButton-root), .check-email-page button:not(.MuiIconButton-root) { height: 34px; border-radius: var(--env-var-radius-2); @@ -39,21 +34,18 @@ .set-new-password-form, .password-confirmed-form, -.forgot-password-form, .check-email-form { margin-top: 65px; width: var(--env-var-width-2); } .set-new-password-page p.MuiTypography-root, .password-confirmed-page p.MuiTypography-root, -.forgot-password-page p.MuiTypography-root, .check-email-page p.MuiTypography-root { color: var(--env-var-color-2); } .set-new-password-page button:not(.MuiIconButton-root) svg, .password-confirmed-page button:not(.MuiIconButton-root) svg, -.forgot-password-page button svg, .check-email-page button svg { margin-right: 5px; } @@ -147,3 +139,7 @@ width: 100%; max-width: 800px; } + +.forgot-password-page h1 { + font-size: var(--env-var-font-size-large-plus); +} \ No newline at end of file