index.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import * as action from '../../actions'
  2. import { useEffect, useState } from 'react';
  3. import { connect } from 'react-redux';
  4. import { Link } from 'react-router-dom';
  5. import { history } from '../../App';
  6. const RegisterForm = ({ onRegister, regData }) => {
  7. let [login, setLogin] = useState()
  8. let [password, setPassword] = useState()
  9. let [password2, setPassword2] = useState()
  10. let [data, setData] = useState()
  11. let [isReg, setIsReg] = useState(false)
  12. useEffect(() => {
  13. setData(regData)
  14. }, [regData, data])
  15. return (
  16. <>
  17. <h1>Web-player</h1>
  18. <div className='forms'>
  19. <h2 className='highlightYellow'>Registration</h2>
  20. <input className='forms__input' type="text" placeholder='Login' onChange={(e) => setLogin(e.target.value)} />
  21. <input className='forms__input' type="password" placeholder='Password' onChange={(e) => setPassword(e.target.value)} />
  22. <input
  23. className='forms__input'
  24. disabled={!password || password.length < 8} type="password" placeholder='Repeat Password *'
  25. onChange={(e) => setPassword2(e.target.value)}
  26. />
  27. <small style={{ color: 'red' }}>{password2 && password2 !== password ? 'Passwords do not match' : ''}</small>
  28. <br />
  29. {data?.payload && isReg? <small className='highlightGreen'>User {data.payload.login} successfully registered!</small> :
  30. <button
  31. className='forms__button highlightYellow'
  32. disabled={!password || !login || password2 !== password}
  33. onClick={() => {onRegister(login, password); setIsReg(true)}}
  34. >Register</button>}
  35. <br />
  36. <Link className='forms__link highlightYellow' to="/login">Back to log-in page</Link>
  37. </div>
  38. </>
  39. )
  40. }
  41. export const RegisterFormConnect = connect(state => ({regData: state.promise.registration || {}}), { onRegister: action.actionRegister })(RegisterForm)
  42. const LoginForm = ({ loged, onLogin }) => {
  43. let [login, setLogin] = useState()
  44. let [password, setPassword] = useState()
  45. let [log, setLog] = useState()
  46. useEffect(() => {
  47. setLog(loged)
  48. if (log?.payload && localStorage.authToken) history.push('/player')
  49. }, [loged, log])
  50. return (
  51. <>
  52. <h1>Web-player</h1>
  53. <div className='forms'>
  54. <h2 className='highlightYellow'>Log-in</h2>
  55. <input className='forms__input' type="text" placeholder='Login' onChange={(e) => setLogin(e.target.value)} />
  56. <input className='forms__input' type="password" placeholder='Password' onChange={(e) => setPassword(e.target.value)} />
  57. <small style={{ color: 'red' }}>
  58. {loged.status === 'REJECTED' || (loged.status === 'RESOLVED' && !loged.payload)? 'invalid login or password' : ''}
  59. </small>
  60. <br />
  61. <button
  62. className='forms__button highlightGreen'
  63. disabled={!password || !login}
  64. onClick={() => { onLogin(login, password) }}
  65. >Login</button>
  66. <p>- OR -</p>
  67. <Link className='forms__link highlightYellow' to="/registration">Register new user</Link>
  68. </div>
  69. </>
  70. )
  71. }
  72. export const LoginFormConnect = connect(state => ({ loged: state.promise.login || {} }), { onLogin: action.actionFullLogin })(LoginForm)