Sign.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import React from "react";
  2. import {connect} from 'react-redux';
  3. import {useState} from "react";
  4. import {actionFullRegister} from '../actions'
  5. import {Redirect} from 'react-router-dom';
  6. import ConfirmPass from "../Components/RegErrors/Confirmpass";
  7. import MinPass from "../Components/RegErrors/MinPass";
  8. import NumberCheckPass from "../Components/RegErrors/numberCheckPass";
  9. import showPwdImg from '../images/3844476-eye-see-show-view-watch_110339.svg';
  10. import hidePwdImg from '../images/3844477-disable-eye-inactive-see-show-view-watch_110343.svg';
  11. import Button from "../Components/Button";
  12. const Sign = ({onSign,Reg}) => {
  13. const [login,setLogin] = useState('')
  14. const [password,setPassword] = useState('')
  15. const [password2,setPassword2] = useState('')
  16. const[show,setShow]=useState(false)
  17. const[show2,setShow2]=useState(false)
  18. const[show3,setShow3]=useState(false)
  19. const [open,setOpen] = useState(false)
  20. const [open2,setOpen2] = useState(false)
  21. const isRegistrationValid = () => {
  22. if(!login || password.length<3 || password2.length<3) {
  23. return false
  24. }
  25. if(!password.match(/\d/)){
  26. return false
  27. }
  28. if(password !== password2) {
  29. return false
  30. }
  31. else return true
  32. }
  33. const registrationCallback = () => {
  34. if(isRegistrationValid()) {
  35. onSign(login, password)
  36. }
  37. else {
  38. setShow(true)
  39. setShow2(true)
  40. setShow3(true)
  41. }
  42. }
  43. return (
  44. <div className="divSign mt-5">
  45. <h4>Регистрация</h4>
  46. <div className="login-container">
  47. <label>Придумайте логин</label>
  48. <input value={login} onChange={e => setLogin(e.target.value)} placeholder="Логин"></input>
  49. </div>
  50. <div className='pwd-container1'>
  51. <label>Придумайте пароль</label>
  52. <input value={password} type={open ? "text" : "password"} onChange={e => setPassword(e.target.value)} placeholder="Пароль" />
  53. <img src={open ? hidePwdImg : showPwdImg} onClick={() => setOpen(!open)}/>
  54. </div>
  55. <div className='pwd-container1 mb-3'>
  56. <label>Повторите пароль</label>
  57. <input value={password2} type={open2 ? "text" : "password"} onChange={e => setPassword2(e.target.value)} placeholder="Пароль" />
  58. <img src={open2 ? hidePwdImg : showPwdImg} onClick={() => setOpen2(!open2)}/>
  59. </div>
  60. <Button
  61. name='Зарегистрироваться'
  62. isValid={isRegistrationValid()}
  63. callback={registrationCallback}
  64. />
  65. {show && (!login || password.length<3 || password2.length<3) && <MinPass/>}
  66. {show2 && (!password.match(/\d/)) && <NumberCheckPass />}
  67. {show3 && (password !== password2) && <ConfirmPass />}
  68. {(Reg === null) && <p>Данный пользователь уже зарегистрирован</p>}
  69. {Reg && <Redirect push to='/'/>}
  70. </div>
  71. )
  72. }
  73. const ConnectSign = connect(state=> ({Reg:state.promiseReducer.reg?.payload?.data?.createUser}),{onSign: actionFullRegister})(Sign)
  74. export default ConnectSign