authorization.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. import React, {useState} from 'react';
  2. import {Link} from 'react-router-dom';
  3. import { actionAuthLogin } from '../store/authReducer';
  4. import { store } from '../store/store';
  5. import { connect } from 'react-redux';
  6. async function sendForm (url, data) {
  7. let error = await fetch(`http://player-api/api/${url}`, {
  8. method: 'POST',
  9. body: data
  10. }).then(res => res.json())
  11. .then(data => {
  12. if(data.token) {
  13. store.dispatch(actionAuthLogin(data.token, data.user));
  14. return data
  15. } else {
  16. console.log(data.message)
  17. return data.message;
  18. }
  19. })
  20. console.log(error)
  21. return error;
  22. }
  23. export const LoginForm = ({authState}) => {
  24. const [login, setLogin] = useState('');
  25. const [password, setPassword] = useState('');
  26. const [textModal, setTextModal] = useState('');
  27. const postForm = async(event) =>{
  28. event.preventDefault();
  29. const data = new FormData();
  30. data.append("login", login);
  31. data.append("password", password);
  32. setTextModal(( typeof(await sendForm('login', data))==='string')? (await sendForm('login', data)) : '');
  33. }
  34. // let history = useHistory();
  35. // useEffect(() => {
  36. // if (authState) {history.push('/user')}
  37. // }, []);
  38. return <>
  39. <form onSubmit={postForm} className="authorization container align-items-center justify-content-center vw-100 vh-100 d-flex">
  40. <div className="col-4">
  41. <h4 className="w-100 text-center">Login</h4>
  42. <hr/>
  43. <label className="form-label">*Username</label><br/>
  44. <input type="text" id="username" className='input form-control mb-3' value={login} onChange={e => setLogin(e.target.value)}/>
  45. <label className="form-label">*Password</label>
  46. <input type="password" id="password" className='form-control mb-3' value={password} onChange={e => setPassword(e.target.value)}/>
  47. <p className='text-danger'>{textModal ? ('*' + textModal) : ''}</p>
  48. <div className="d-flex justify-content-between">
  49. <Link to="/register" className="">Register</Link>
  50. <button type='submit' className="btn btn-outline-danger" disabled={ password.length < 8 || login.length < 5} onClick={() => console.log(textModal)}>Log in</button>
  51. </div>
  52. </div>
  53. </form>
  54. </>
  55. }
  56. export const CLoginForm = connect(state => ({ authState: state.auth?.token }))(LoginForm);
  57. // export const RegisterForm = ({authState2}) => {
  58. // const [login, setLogin] = useState('');
  59. // const [password, setPassword] = useState('');
  60. // const [name, setName] = useState('');
  61. // const [passwordConfirm, setPasswordConfirm] = useState('')
  62. // const postForm = (event) =>{
  63. // event.preventDefault();
  64. // const data = new FormData();
  65. // data.append("login", login);
  66. // data.append("password", password);
  67. // data.append("name", name);
  68. // sendForm('register', data);
  69. // }
  70. // // let history = useHistory();
  71. // // useEffect(() => {
  72. // // if (authState2) {history.push('/user')}
  73. // // }, [authState2]);
  74. // return (
  75. // <form onSubmit={postForm} id="register_form">
  76. // <div className="register container align-items-center justify-content-center vw-100 vh-100 d-flex">
  77. // <div className="col-4">
  78. // <h4 className="w-100 text-center">Sign Up</h4>
  79. // <hr/>
  80. // <label className="form-label">Login</label><br/>
  81. // <input type="text" id="username" className="input form-control mb-3" placeholder="asya123"
  82. // value={login} onChange={e => setLogin(e.target.value)}
  83. // />
  84. // <label className="form-label">Full Name</label><br/>
  85. // <input type="text" id="name" className="input form-control mb-3" placeholder="Anastasiia"
  86. // value={name} onChange={e => setName(e.target.value)}
  87. // />
  88. // <label className="form-label">Password</label>
  89. // <input type="password" id="password" className="form-control mb-3" value={password} onChange={e => setPassword(e.target.value)} />
  90. // <label className="form-label">Confirm password</label>
  91. // <input type="password" id="confirm_password" className="form-control mb-3" value={passwordConfirm} onChange={e => setPasswordConfirm(e.target.value)}/>
  92. // <div className="d-flex justify-content-between align-items-center">
  93. // <h6>Already a member? <Link to="/login" className="">Log in</Link></h6>
  94. // <button type="submit" className="btn btn-outline-danger" disabled={password !== passwordConfirm || password.length < 3 || login.length < 3} onClick={() => console.log(login, password)}>
  95. // Sign Up
  96. // </button>
  97. // </div>
  98. // </div>
  99. // </div>
  100. // </form>
  101. // )
  102. // }
  103. // export const CRegisterForm = connect(state => ({ authState2: state.auth?.token }))(RegisterForm)