Login.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from "react";
  2. import {connect} from 'react-redux';
  3. import {useState} from "react";
  4. import {actionFullLogin} from '../actions'
  5. import Button from "../Components/Button";
  6. import LoginError from "../Components/RegErrors/LoginError";
  7. import showPwdImg from '../images/3844476-eye-see-show-view-watch_110339.svg';
  8. import hidePwdImg from '../images/3844477-disable-eye-inactive-see-show-view-watch_110343.svg';
  9. import {Link, useHistory} from 'react-router-dom';
  10. const LoginForm = ({onLogin,loggedIn}) => {
  11. const [login,setLogin] = useState('')
  12. const [password,setPassword] = useState('')
  13. const [open,setOpen] = useState(false)
  14. const[show,setShow]=useState(false)
  15. let history = useHistory()
  16. if(localStorage.authToken) {
  17. history.push('/')
  18. }
  19. const isLoginValid = () => {
  20. if(!login || !password) {
  21. return false
  22. }
  23. else return true
  24. }
  25. const loginCallback = () => {
  26. if(isLoginValid()) {
  27. onLogin(login, password)
  28. }
  29. else {
  30. setShow(true)
  31. }
  32. }
  33. return (
  34. <div className="divLogin">
  35. <h4>Войти</h4>
  36. <div className="login-container">
  37. <label>Логин</label>
  38. <input value={login} onChange={e => setLogin(e.target.value)} placeholder="Логин"></input>
  39. </div>
  40. <div className='pwd-container'>
  41. <label>Ваш текущий пароль от olx</label>
  42. <input value={password} type={open ? "text" : "password"} onChange={e => setPassword(e.target.value)} placeholder="Пароль" />
  43. <img src={open ? hidePwdImg : showPwdImg} onClick={() => setOpen(!open)}/>
  44. </div>
  45. <div className='login-container'>
  46. Не зарегистрированы? <Link to='sign' className='mb-3'>Создать аккаунт</Link>
  47. <Button name='Войти' isValid={isLoginValid()} callback={loginCallback} />
  48. </div>
  49. {(loggedIn === null) && <p>Неверный логин или пароль</p>}
  50. {show && (!login || !password) && <LoginError />}
  51. </div>
  52. )
  53. }
  54. const ConnectLog = connect(state => ({loggedIn: state.promiseReducer?.login?.payload}), {onLogin: actionFullLogin})(LoginForm)
  55. export default ConnectLog