import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import AppContainer from '~/client/services/AppContainer'; import { toastSuccess, toastError } from '~/client/util/apiNotification'; import { apiv3Put } from '~/client/util/apiv3-client'; import loggerFactory from '~/utils/logger'; import { withUnstatedContainers } from './UnstatedUtils'; const logger = loggerFactory('growi:passwordReset'); const PasswordResetExecutionForm = (props) => { const { t } = useTranslation(); const { appContainer } = props; const [newPassword, setNewPassword] = useState(''); const [newPasswordConfirm, setNewPasswordConfirm] = useState(''); const [validationErrorI18n, setValidationErrorI18n] = useState(''); // get token from URL const pathname = window.location.pathname.split('/'); const token = pathname[2]; const changePassword = async(e) => { e.preventDefault(); if (newPassword === '' || newPasswordConfirm === '') { setValidationErrorI18n('personal_settings.password_is_not_set'); return; } if (newPassword !== newPasswordConfirm) { setValidationErrorI18n('forgot_password.password_and_confirm_password_does_not_match'); return; } try { await apiv3Put('/forgot-password', { token, newPassword, newPasswordConfirm, }); setValidationErrorI18n(''); toastSuccess(t('toaster.update_successed', { target: t('Password') })); } catch (err) { toastError(err); logger.error(err); } }; return (
setNewPassword(e.target.value)} />
setNewPasswordConfirm(e.target.value)} />
{validationErrorI18n !== '' && (

{t(validationErrorI18n)}

)}
{t('forgot_password.sign_in_instead')}
); }; const PasswordResetExecutionFormWrapper = withUnstatedContainers(PasswordResetExecutionForm, [AppContainer]); PasswordResetExecutionForm.propTypes = { appContainer: PropTypes.instanceOf(AppContainer).isRequired, }; export default PasswordResetExecutionFormWrapper;