PasswordResetRequestForm.jsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React, { useState } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { toastSuccess, toastError } from '~/client/util/apiNotification';
  4. import { apiv3Post } from '~/client/util/apiv3-client';
  5. const PasswordResetRequestForm = (props) => {
  6. const { t } = useTranslation();
  7. const [email, setEmail] = useState('');
  8. const changeEmail = (inputValue) => {
  9. setEmail(inputValue);
  10. };
  11. const sendPasswordResetRequestMail = async(e) => {
  12. e.preventDefault();
  13. if (email === '') {
  14. toastError('err', t('forgot_password.email_is_required'));
  15. return;
  16. }
  17. try {
  18. await apiv3Post('/forgot-password', { email });
  19. toastSuccess(t('forgot_password.success_to_send_email'));
  20. }
  21. catch (err) {
  22. toastError(err);
  23. }
  24. };
  25. return (
  26. <form onSubmit={sendPasswordResetRequestMail}>
  27. <div className="form-group">
  28. <div className="input-group">
  29. <input name="email" placeholder="E-mail Address" className="form-control" type="email" onChange={e => changeEmail(e.target.value)} />
  30. </div>
  31. </div>
  32. <div className="form-group">
  33. <button
  34. className="btn btn-lg btn-primary btn-block"
  35. type="submit"
  36. >
  37. {t('forgot_password.send')}
  38. </button>
  39. </div>
  40. <a href="/login">
  41. <i className="icon-login mr-1"></i>{t('forgot_password.return_to_login')}
  42. </a>
  43. </form>
  44. );
  45. };
  46. PasswordResetRequestForm.propTypes = {
  47. };
  48. export default PasswordResetRequestForm;