index.js 2.8 KB

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