LoginForm.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import React, { useState, useEffect } from "react";
  2. import { Form, Input, Button, Checkbox } from "antd";
  3. import { UserOutlined, LockOutlined } from "@ant-design/icons";
  4. import { useHistory, Link } from "react-router-dom";
  5. //////////////////////////////////
  6. import jwt_decode from "jwt-decode";
  7. // import store from './vuex/store';
  8. import thunk from "redux-thunk";
  9. import { createStore, combineReducers, applyMiddleware } from "redux";
  10. import { connect } from "react-redux";
  11. /////////////////////////////////
  12. import getGQL from "../utils/getGQL";
  13. import "../styles/RegisterForm.css";
  14. import { doLogin } from "../actions/authActions";
  15. // import { BrowserRouter as Router, Route } from 'react-router-dom';
  16. // const history = createHistory()
  17. //////////////////////////////////////////////////////////////
  18. // const store = createStore(applyMiddleware(thunk)) //вторым параметром идет миддлварь
  19. const LoginForm = ({ store, history, doLogin, isLoggedIn }) => {
  20. // const history = useHistory();
  21. const [form] = Form.useForm();
  22. const [login, setLogin] = useState("");
  23. const [password, setPassword] = useState("");
  24. useEffect(() => {
  25. isLoggedIn && history.push("/private");
  26. }, [isLoggedIn]);
  27. const onFinish = (values) => {
  28. console.log("Success:", values);
  29. };
  30. const onFinishFailed = (errorInfo) => {
  31. console.log("Failed:", errorInfo);
  32. };
  33. // let p = getGQL('http://player.asmer.fs.a-level.com.ua/graphql')(
  34. // let p = getGQL('/graphql')(
  35. // `query Login{
  36. // login(login: "${login}", password: "${password}")
  37. // }`
  38. // ).then((data) =>
  39. // console.log(data)
  40. // )
  41. // store.dispatch(actionPending())
  42. // p.then(data => store.dispatch(actionResolved(data)))
  43. /////////////////////////////////////////////////////////////////////////
  44. function onLogin() {
  45. doLogin && doLogin(login, password);
  46. console.log(login);
  47. }
  48. return (
  49. <div className="registerForm">
  50. <div>
  51. <Form
  52. name="basic"
  53. form={form}
  54. onFinish={onFinish}
  55. onFinishFailed={onFinishFailed}
  56. >
  57. <Form.Item
  58. label="Username"
  59. name="username"
  60. value={onLogin}
  61. onChange={(e) => setLogin(e.target.value)}
  62. rules={[
  63. {
  64. required: true,
  65. message: "Please input your username!",
  66. },
  67. ]}
  68. >
  69. <Input
  70. prefix={<UserOutlined className="site-form-item-icon" />}
  71. onChange={(e) => {
  72. console.log(e.target.value);
  73. form.setFieldsValue({ username: e.target.value });
  74. }}
  75. />
  76. </Form.Item>
  77. <Form.Item
  78. label="Password"
  79. name="password"
  80. value={password}
  81. onChange={(e) => setPassword(e.target.value)}
  82. rules={[
  83. {
  84. required: true,
  85. message: "Please input your password!",
  86. },
  87. ]}
  88. >
  89. <Input.Password
  90. prefix={<LockOutlined className="site-form-item-icon" />}
  91. />
  92. </Form.Item>
  93. <Form.Item>
  94. <Button
  95. type="primary"
  96. htmlType="submit"
  97. disabled={!login || !password}
  98. onClick={onLogin}
  99. >
  100. Submit
  101. </Button>
  102. <Link to="/" className="link-approval">Registration</Link>
  103. </Form.Item>
  104. </Form>
  105. </div>
  106. </div>
  107. );
  108. };
  109. const mapStateToProps = (state) => ({
  110. isLoggedIn: !!state.auth.token,
  111. });
  112. const mapDispatchToProps = (dispatch) => ({
  113. doLogin: (login, password) => dispatch(doLogin(login, password)),
  114. });
  115. export default connect(mapStateToProps, mapDispatchToProps)(LoginForm);