'use client' import PropTypes from 'prop-types' import {useState} from 'react' import {passwordReset} from '@directus/sdk' import {useRouter} from 'next/navigation' import Typography from '@mui/material/Typography' import Container from '@mui/material/Container' import Box from '@mui/material/Box' import FormControl from '@mui/material/FormControl' import InputLabel from '@mui/material/InputLabel' import OutlinedInput from '@mui/material/OutlinedInput' import InputAdornment from '@mui/material/InputAdornment' import IconButton from '@mui/material/IconButton' import Button from '@mui/material/Button' import FormHelperText from '@mui/material/FormHelperText' import Visibility from '@mui/icons-material/Visibility' import VisibilityOff from '@mui/icons-material/VisibilityOff' import {directusClient} from '@/lib/directus.js' import AuthAlert from '@/components/auth-form/auth-alert.js' export default function RequestResetForm({token}) { const [isOpen, setIsOpen] = useState(false) const [newPassword, setNewPassword] = useState('') const [newPasswordVerification, setNewPasswordVerification] = useState('') const [showPassword, setShowPassword] = useState(false) const [showPasswordVerification, setShowPasswordVerification] = useState(false) const [success, setSuccess] = useState('') const [error, setError] = useState('') const reset_token = token // eslint-disable-line camelcase const router = useRouter() const handleClickShowPassword = () => { setShowPassword(!showPassword) } const handleMouseDownPassword = event => { event.preventDefault() } const handleClickShowPasswordVerifiation = () => { setShowPasswordVerification(!showPasswordVerification) } const handleMouseDownPasswordVerification = event => { event.preventDefault() } const handleFormSubmit = async e => { e.preventDefault() try { await directusClient.request( passwordReset(reset_token, newPassword) ) setSuccess('Mot de passe réinitialisé avec succès, redirection vers la page de connexion...') setIsOpen(true) setTimeout(() => { router.push('/login') }, 1000) } catch (error) { console.log(error) setError('Le jeton de réinitialisation du mot de passe n’est pas valide, veuillez demander un nouveau lien de réinitialisation du mot de passe !') setIsOpen(true) } } return ( <> {error && } {success && } Fournir un nouveau mot de passe pour votre compte Entrez votre nouveau mot de passe pour votre compte Mot de passe {showPassword ? : } } value={newPassword} onChange={e => setNewPassword(e.target.value)} /> Vérification du mot de passe {showPasswordVerification ? : } } onChange={e => setNewPasswordVerification(e.target.value)} /> {newPassword !== newPasswordVerification && ( Les mots de passe ne correspondent pas ! )} ) } RequestResetForm.propTypes = { token: PropTypes.string.isRequired }