Reset password confirmation dialog
This commit is contained in:
@@ -25,7 +25,17 @@ export default function UpdateAccountModule() {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const [userInformation, setUserInformation] = useState<any>();
|
const [userInformation, setUserInformation] = useState<any>();
|
||||||
|
|
||||||
const { isOpen, onOpen, onOpenChange } = useDisclosure();
|
const {
|
||||||
|
isOpen: isArchiveDialogOpen,
|
||||||
|
onOpen: onArchiveDialogOpen,
|
||||||
|
onOpenChange: onArchiveDialogOpenChange,
|
||||||
|
} = useDisclosure();
|
||||||
|
|
||||||
|
const {
|
||||||
|
isOpen: isResetPasswordOpen,
|
||||||
|
onOpen: onResetPasswordOpen,
|
||||||
|
onOpenChange: onResetPasswordOpenChange,
|
||||||
|
} = useDisclosure();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
retrieveUserInformation()
|
retrieveUserInformation()
|
||||||
@@ -239,13 +249,15 @@ export default function UpdateAccountModule() {
|
|||||||
<Button
|
<Button
|
||||||
color="danger"
|
color="danger"
|
||||||
variant="light"
|
variant="light"
|
||||||
onPress={() => {
|
onPress={onResetPasswordOpen}
|
||||||
sendResetPasswordEmail();
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
Reset your password
|
Reset your password
|
||||||
</Button>
|
</Button>
|
||||||
<Button color="danger" variant="flat" onPress={onOpen}>
|
<Button
|
||||||
|
color="danger"
|
||||||
|
variant="flat"
|
||||||
|
onPress={onArchiveDialogOpen}
|
||||||
|
>
|
||||||
Archive this account
|
Archive this account
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
@@ -254,7 +266,12 @@ export default function UpdateAccountModule() {
|
|||||||
</Accordion>
|
</Accordion>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Modal isOpen={isOpen} onOpenChange={onOpenChange}>
|
|
||||||
|
{/* Archive Account Modal */}
|
||||||
|
<Modal
|
||||||
|
isOpen={isArchiveDialogOpen}
|
||||||
|
onOpenChange={onArchiveDialogOpenChange}
|
||||||
|
>
|
||||||
<ModalContent>
|
<ModalContent>
|
||||||
{(onClose) => {
|
{(onClose) => {
|
||||||
return (
|
return (
|
||||||
@@ -292,6 +309,48 @@ export default function UpdateAccountModule() {
|
|||||||
}}
|
}}
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
{/* Reset Password Modal */}
|
||||||
|
<Modal
|
||||||
|
isOpen={isResetPasswordOpen}
|
||||||
|
onOpenChange={onResetPasswordOpenChange}
|
||||||
|
>
|
||||||
|
<ModalContent>
|
||||||
|
{(onClose) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<ModalHeader className="flex flex-col gap-1">
|
||||||
|
Reset Password
|
||||||
|
</ModalHeader>
|
||||||
|
<ModalBody>
|
||||||
|
<p>
|
||||||
|
We will send you an email helping you to reset your
|
||||||
|
password.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Check in the junk mailbox if you do not receive it after
|
||||||
|
3 minutes.
|
||||||
|
</p>
|
||||||
|
</ModalBody>
|
||||||
|
<ModalFooter>
|
||||||
|
<Button color="danger" variant="light" onPress={onClose}>
|
||||||
|
Cancel
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
color="danger"
|
||||||
|
onPress={() => {
|
||||||
|
sendResetPasswordEmail();
|
||||||
|
onClose();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Send email
|
||||||
|
</Button>
|
||||||
|
</ModalFooter>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
</ModalContent>
|
||||||
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import EcoconnectFullLogo from "../components/EcoconnectFullLogo";
|
|||||||
import NextUIFormikInput from "../components/NextUIFormikInput";
|
import NextUIFormikInput from "../components/NextUIFormikInput";
|
||||||
import { Formik, Form } from "formik";
|
import { Formik, Form } from "formik";
|
||||||
import * as Yup from "yup";
|
import * as Yup from "yup";
|
||||||
import axios from "axios";
|
|
||||||
import { popErrorToast, popToast } from "../utilities";
|
import { popErrorToast, popToast } from "../utilities";
|
||||||
|
|
||||||
const validationSchema = Yup.object({
|
const validationSchema = Yup.object({
|
||||||
password: Yup.string()
|
password: Yup.string()
|
||||||
.trim()
|
.trim()
|
||||||
|
.min(8, "Password must be at least 8 characters")
|
||||||
.max(69, "Password must be at most 69 characters")
|
.max(69, "Password must be at most 69 characters")
|
||||||
.matches(
|
.matches(
|
||||||
/^(?=.*[a-zA-Z])(?=.*[0-9]).{1,}$/,
|
/^(?=.*[a-zA-Z])(?=.*[0-9]).{1,}$/,
|
||||||
@@ -20,7 +20,7 @@ const validationSchema = Yup.object({
|
|||||||
)
|
)
|
||||||
.required("Password is required"),
|
.required("Password is required"),
|
||||||
confirmPassword: Yup.string()
|
confirmPassword: Yup.string()
|
||||||
.oneOf([Yup.ref("password"), undefined], "Passwords must match")
|
.oneOf([Yup.ref("password"), undefined], "Passwords do not match")
|
||||||
.required("Confirm Password is required"),
|
.required("Confirm Password is required"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user