Changeset f5b256e for my-react-app/src/components/Header.js
- Timestamp:
- 04/28/25 14:20:18 (3 weeks ago)
- Branches:
- main
- Children:
- deea3c4
- Parents:
- 8ca35dc
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
my-react-app/src/components/Header.js
r8ca35dc rf5b256e 1 import React from 'react';1 import React, {useEffect, useState} from 'react'; 2 2 import { Link, useNavigate } from 'react-router-dom'; 3 import {jwtDecode} from "jwt-decode"; 4 import axios from "axios"; 3 5 4 6 const Header = () => { 5 7 const navigate = useNavigate(); 6 7 // Check if the user is logged in by looking for a token in localStorage 8 const [user, setUser] = useState({}); 8 9 const isLoggedIn = localStorage.getItem('token'); 9 10 10 11 const handleLogout = () => { 11 // Clear the token from localStorage 12 localStorage.removeItem('token'); 13 // Redirect to the home page or login page after logging out 14 navigate('/login'); 12 localStorage.removeItem("token"); 13 localStorage.removeItem("user"); 14 setUser(null); 15 navigate("/login"); 16 15 17 }; 18 19 useEffect(() => { 20 const fetchUser = async () => { 21 try { 22 const token = localStorage.getItem("token"); 23 if (!token) return; 24 25 const storedUser = localStorage.getItem("user"); 26 if (storedUser) { 27 setUser(JSON.parse(storedUser)); 28 return; 29 } 30 31 const decodedToken = jwtDecode(token); 32 const userId = decodedToken.iss; 33 34 const { data } = await axios.get(`http://localhost:8081/api/user/${userId}`); 35 setUser(data); 36 localStorage.setItem("user", JSON.stringify(data)); 37 } catch (error) { 38 console.error("Error fetching user:", error); 39 } 40 }; 41 fetchUser(); 42 }, [isLoggedIn]); 16 43 17 44 return ( … … 37 64 <form className="form-inline mt-2 mt-md-0 ml-3"> 38 65 {isLoggedIn ? ( 39 <button className="btn btn-outline-danger my-2 my-sm-0" onClick={handleLogout}>Logout</button> 66 <button className="btn btn-outline-danger ml-3" onClick={handleLogout}> 67 Logout {user?.firstName} 68 </button> 40 69 ) : ( 41 <Link className="btn btn-outline-info m y-2 my-sm-0" to="/login">Login</Link>70 <Link className="btn btn-outline-info ml-3" to="/login">Login</Link> 42 71 )} 43 72 </form>
Note:
See TracChangeset
for help on using the changeset viewer.