Login.js 2.5 KB

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