import { useState } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { TextField, Typography, Avatar } from '@material-ui/core'; import { trim } from '../../common/util'; import { modalStyles } from './util'; import Dialogue from '../../common/Dialogue/Dialogue'; import PasswordChecker from '../../user/common/ResetPasswordForm/PasswordChecker/PasswordChecker'; import { useCommonStyles } from '../../../common.styles'; import PasswordMatcher from '../../user/common/ResetPasswordForm/PasswordMatcher/PasswordMatcher'; import ConditionallyRender from '../../common/ConditionallyRender'; import { Alert } from '@material-ui/lab'; function ChangePassword({ showDialog, closeDialog, changePassword, user = {}, }) { const [data, setData] = useState({}); const [error, setError] = useState({}); const [validPassword, setValidPassword] = useState(false); const commonStyles = useCommonStyles(); const updateField = e => { setError({}); setData({ ...data, [e.target.name]: trim(e.target.value), }); }; const submit = async e => { e.preventDefault(); if (!validPassword) { if (!data.password || data.password.length < 8) { setError({ password: 'You must specify a password with at least 8 chars.', }); return; } if (!(data.password === data.confirm)) { setError({ confirm: 'Passwords does not match' }); return; } } try { await changePassword(user, data.password); setData({}); closeDialog(); } catch (error) { const msg = error.message || 'Could not update password'; setError({ general: msg }); } }; const onCancel = e => { e.preventDefault(); setData({}); closeDialog(); }; return (
{error.general}} /> Changing password for user
{user.username || user.email}

{error.general}

); } ChangePassword.propTypes = { showDialog: PropTypes.bool.isRequired, closeDialog: PropTypes.func.isRequired, changePassword: PropTypes.func.isRequired, validatePassword: PropTypes.func.isRequired, user: PropTypes.object, }; export default ChangePassword;