Login.jsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import './css/Login.css'
  2. import Sidebar from './Components/Sidebar'
  3. import Cookies from 'js-cookie'
  4. import banner from "/src/assets/banner.png"
  5. import { default as axios } from 'axios'
  6. import { config } from './main'
  7. import { useNavigate } from 'react-router'
  8. import React, { useEffect } from 'react'
  9. function Login() {
  10. let navigate = useNavigate();
  11. if (Cookies.get("token") && Cookies.get("token").startsWith("HajeebToken ")) {
  12. useEffect(() => {
  13. return navigate("/");
  14. }, [])
  15. }
  16. const handleSubmit = async (e) => {
  17. e.preventDefault();
  18. document.getElementById("submit").disabled = true;
  19. const formData = new FormData(e.target);
  20. let response = await axios.post(config.serverURL + "/account/token", {
  21. username: formData.get("username"),
  22. password: formData.get("password")
  23. })
  24. if(response.data.error) { // Login unsuccessful
  25. document.getElementById("submit").disabled = false;
  26. return alert(`Login error: ${response.data.message}`);
  27. }
  28. // Login successful
  29. Cookies.set("token", `HajeebToken ${response.data.token}`);
  30. return navigate("/");
  31. };
  32. return (
  33. <>
  34. <div className="main">
  35. <Sidebar />
  36. <div className="login-container">
  37. <form className="login" id="form" onSubmit={handleSubmit}>
  38. <img src={banner} width="300px"></img>
  39. <input type="text" placeholder="username" name="username"></input>
  40. <input type="password" placeholder="password" name="password"></input>
  41. <input type="submit" value="Log in/Sign up/Register/Enter Website" id="submit"></input>
  42. </form>
  43. </div>
  44. </div>
  45. </>
  46. )
  47. }
  48. export default Login