93 lines
2.6 KiB
JavaScript
93 lines
2.6 KiB
JavaScript
import {useState} from 'react'
|
||
import PropTypes from 'prop-types'
|
||
import Button from '@mui/material/Button'
|
||
import TextField from '@mui/material/TextField'
|
||
import Dialog from '@mui/material/Dialog'
|
||
import DialogActions from '@mui/material/DialogActions'
|
||
import DialogContent from '@mui/material/DialogContent'
|
||
import DialogContentText from '@mui/material/DialogContentText'
|
||
import DialogTitle from '@mui/material/DialogTitle'
|
||
|
||
import {validateEmail} from '../../lib/utils/emails'
|
||
import {jwennUserEpiEmail, passwordRequest} from '../../lib/oki-api'
|
||
|
||
export default function ResetDialog({lyen, title, activation, content, open, setOpen, setLoading, setError, setSuccess}) {
|
||
const [email, setEmail] = useState('')
|
||
|
||
const forgotPasswordRequest = async () => {
|
||
setLoading(true)
|
||
try {
|
||
await passwordRequest(lyen, email)
|
||
|
||
if (activation) {
|
||
const user = await jwennUserEpiEmail(email)
|
||
localStorage.setItem('user-id', user?.id)
|
||
}
|
||
|
||
setLoading(false)
|
||
setSuccess(true)
|
||
} catch {
|
||
setError('Une erreur s’est produite. Veuillez réessayer ultérieurement')
|
||
setLoading(false)
|
||
}
|
||
}
|
||
|
||
const resetFrom = () => {
|
||
setEmail('')
|
||
}
|
||
|
||
const handleClick = async () => {
|
||
forgotPasswordRequest()
|
||
setOpen(false)
|
||
resetFrom()
|
||
}
|
||
|
||
const handleClose = () => {
|
||
setOpen(false)
|
||
}
|
||
|
||
return (
|
||
<div>
|
||
<Dialog open={open} onClose={handleClose}>
|
||
<DialogTitle>{title}</DialogTitle>
|
||
<DialogContent>
|
||
<DialogContentText>
|
||
{content}
|
||
</DialogContentText>
|
||
<TextField
|
||
autoFocus
|
||
fullWidth
|
||
value={email}
|
||
margin='dense'
|
||
id='email'
|
||
label='Adresse e-mail'
|
||
type='email'
|
||
variant='standard'
|
||
onChange={event => setEmail(event.target.value)}
|
||
/>
|
||
</DialogContent>
|
||
<DialogActions>
|
||
<Button variant='contained' color='secondary' onClick={handleClose}>Annuler</Button>
|
||
<Button disabled={!validateEmail(email)} variant='contained' color='primary' onClick={handleClick}>Valider</Button>
|
||
</DialogActions>
|
||
</Dialog>
|
||
</div>
|
||
)
|
||
}
|
||
|
||
ResetDialog.defaultProps = {
|
||
activation: false
|
||
}
|
||
|
||
ResetDialog.propTypes = {
|
||
lyen: PropTypes.string.isRequired,
|
||
title: PropTypes.string.isRequired,
|
||
activation: PropTypes.bool,
|
||
content: PropTypes.string.isRequired,
|
||
open: PropTypes.bool.isRequired,
|
||
setOpen: PropTypes.func.isRequired,
|
||
setLoading: PropTypes.func.isRequired,
|
||
setError: PropTypes.func.isRequired,
|
||
setSuccess: PropTypes.func.isRequired,
|
||
}
|