Advertisement
Guest User

react login

a guest
Oct 9th, 2022
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.39 KB | None | 0 0
  1. import { useEffect, useState } from "react"
  2. import Admin from "../../pages/Admin"
  3. import { Navigate } from "react-router-dom";
  4. import { useNavigate } from "react-router-dom";
  5.  
  6. function AdminLogin() {
  7.  
  8. const navigate = useNavigate()
  9. const [isAuthenticated, setIsAuthenticated] = useState(false);
  10. const [csrf, setCsrf] = useState('')
  11. const [username, setUsername] = useState('')
  12. const [password, setPassword] = useState('')
  13. const [counter, setCounter] = useState(0)
  14.  
  15.  
  16. function getCsrf(){
  17. fetch("http://localhost:8000/csrf/", {
  18. credentials: "include",
  19. })
  20. .then((res) => {
  21. let csrfToken = res.headers.get("X-CSRFToken");
  22. setCsrf({csrf: csrfToken});
  23.  
  24. })
  25. .catch((err) => {
  26. console.log(err);
  27. })
  28. }
  29.  
  30. const login = (event) => {
  31. event.preventDefault();
  32.  
  33. fetch("http://localhost:8000/login/", {
  34. method: "POST",
  35. headers: {
  36. "Content-Type": "application/json",
  37. "X-CSRFToken": csrf.csrf,
  38. },
  39. credentials: "include",
  40. body: JSON.stringify({username: username, password: password}),
  41. })
  42. .then(isResponseOk)
  43. .then((data) => {
  44. console.log(data);
  45. setIsAuthenticated(true)
  46. localStorage.setItem("authenticated", true);
  47. setUsername('')
  48. setPassword('')
  49.  
  50. // this.setState({isAuthenticated: true, username: "", password: ""});
  51. })
  52. .catch((err) => {
  53. console.log('inside login catch')
  54. console.log(csrf.csrf, 'catch')
  55. console.log(err);
  56. });
  57. }
  58.  
  59. const isResponseOk = (response) =>{
  60. if (response.status >= 200 && response.status <= 299) {
  61. return response.json();
  62. } else {
  63. console.log(response)
  64. throw Error(response.statusText);
  65. }
  66. }
  67. useEffect(() => {
  68. //getSessions
  69. fetch("http://localhost:8000/session/", {
  70. credentials: "include",
  71. })
  72. .then((res) => res.json())
  73. .then((data) => {
  74. // console.log(data);
  75. if (data.isAuthenticated) {
  76. setIsAuthenticated(true)
  77.  
  78. console.log(data)
  79. } else {
  80.  
  81. setIsAuthenticated(false)
  82. console.log(data)
  83.  
  84. getCsrf()
  85. }})
  86. .catch((err) => {
  87. console.log(err);
  88. });
  89.  
  90.  
  91. }, [])
  92.  
  93. console.log(csrf);
  94. console.log(counter)
  95.  
  96.  
  97.  
  98. const handleUsername = (e) => {
  99. setUsername(e.target.value)
  100. }
  101.  
  102. const handlePassword = (e) => {
  103. setPassword(e.target.value)
  104. }
  105.  
  106. const loginScreen = (
  107. <div className="login-box m-auto">
  108. <div className="card">
  109. <div className="card-body login-card-body">
  110. <p className="login-box-msg">Sign in to start your session</p>
  111. <form method="post" onSubmit={login}>
  112. <div className="input-group mb-3">
  113. <input required type="text" value={username} onChange={handleUsername} className="form-control" placeholder="Username" />
  114. <div className="input-group-append">
  115. <div className="input-group-text">
  116. <span className="fas fa-envelope" />
  117. </div>
  118. </div>
  119. </div>
  120. <div className="input-group mb-3">
  121. <input required type="password" value={password} onChange={handlePassword} className="form-control" placeholder="Password" />
  122. <div className="input-group-append">
  123. <div className="input-group-text">
  124. <span className="fas fa-lock" />
  125. </div>
  126. </div>
  127. </div>
  128. <div className="row">
  129.  
  130. <div className="col-4">
  131. <button type="submit" className="btn btn-primary btn-block">Sign In</button>
  132. </div>
  133. </div>
  134. </form>
  135. </div>
  136. </div>
  137. </div>)
  138.  
  139. if(isAuthenticated)
  140. {
  141. return <Navigate replace to="/admin/dashboard" />;
  142. }
  143. else{
  144.  
  145. return loginScreen
  146. }
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement