import React, { useState } from 'react' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faAngleLeft, faEnvelope, faLockOpen, faUnlockAlt } from '@fortawesome/free-solid-svg-icons' import { Col, Row, Form, Card, Button, Container, InputGroup } from '@themesberg/react-bootstrap' import { Link, useNavigate } from 'react-router-dom' // import axios from 'axios' // import { Routes } from '../../routes' import Swal from 'sweetalert2' import { isAutheticated } from '../../../auth' import Axios from '../../../axios' // import Axios from '../../axios' const ChangePassword = () => { const [loading, setLoading] = useState(false) const navigate = useNavigate() const token = isAutheticated() const [user, setUser] = useState({ oldPassword: '', newPassword: '', confirmPassword: '', }) const [errors, setErrors] = useState({ confirmPasswordError: '', newPasswordError: '', oldPasswordError: '', passwordMismatchError: '', }) const validEmailRegex = RegExp( /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i, ) const validPasswordRegex = RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{7,}$/) const handleChange = (e) => { const { name, value } = e.target switch (name) { case 'oldPassword': setErrors({ ...errors, oldPasswordError: validPasswordRegex.test(value) ? '' : 'Password Shoud Be 8 Characters Long, Atleast One Uppercase, Atleast One Lowercase,Atleast One Digit, Atleast One Special Character', }) break case 'newPassword': setErrors({ ...errors, newPasswordError: validPasswordRegex.test(value) ? '' : 'Password Shoud Be 8 Characters Long, Atleast One Uppercase, Atleast One Lowercase,Atleast One Digit, Atleast One Special Character', }) break case 'confirmPassword': setErrors({ ...errors, confirmPasswordError: validPasswordRegex.test(value) ? '' : 'Password should be 8 characters long, contain at least one uppercase letter, one lowercase letter, one digit, and one special character', passwordMismatchError: value !== user.newPassword ? 'Passwords do not match' : '', }) break default: break } setUser({ ...user, [name]: value }) } const handleSubmit = async (e) => { e.preventDefault() if (!(user.oldPassword && user.newPassword && user.confirmPassword)) { return Swal.fire('Error!', 'All fields are required', 'error') } if (!(user.newPassword.length >= 8)) { return Swal.fire('Error!', 'New password must be 8 characters long', 'error') } if (user.newPassword !== user.confirmPassword) { return Swal.fire('Error!', 'New Password and Confirm Password do not match!', 'error') } setLoading(true) try { const res = await Axios.put( '/api/rd-password/update', { ...user }, { headers: { Authorization: `Bearer ${token}`, }, }, ) console.log(res) if (res?.data.success) { Swal.fire({ title: 'Done', text: 'Password Changed', icon: 'success', confirmButtonText: 'ok', confirmButtonColor: '#303c54', iconColor: '#303c54', }).then(() => { navigate('/dashboard') }) } } catch (error) { Swal.fire('Error!', error.response?.data.message || 'Something went wrong', 'error') } finally { setLoading(false) } } return (

Back to Dashboard

Change Password

Old Password {errors.oldPasswordError && (

{errors.oldPasswordError}

)} New Password {errors.newPasswordError && (

{errors.newPasswordError}

)} Confirm Password {errors.confirmPasswordError && (

{errors.confirmPasswordError}

)}
) } export default ChangePassword