Ignore:
Timestamp:
04/28/25 14:20:18 (3 weeks ago)
Author:
Aleksandar Panovski <apano77@…>
Branches:
main
Children:
deea3c4
Parents:
8ca35dc
Message:

Big change done works with handle_reservation_update() trigger

File:
1 edited

Legend:

Unmodified
Added
Removed
  • my-react-app/src/components/Header.js

    r8ca35dc rf5b256e  
    1 import React from 'react';
     1import React, {useEffect, useState} from 'react';
    22import { Link, useNavigate } from 'react-router-dom';
     3import {jwtDecode} from "jwt-decode";
     4import axios from "axios";
    35
    46const Header = () => {
    57    const navigate = useNavigate();
    6 
    7     // Check if the user is logged in by looking for a token in localStorage
     8    const [user, setUser] = useState({});
    89    const isLoggedIn = localStorage.getItem('token');
    910
    1011    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
    1517    };
     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]);
    1643
    1744    return (
     
    3764                        <form className="form-inline mt-2 mt-md-0 ml-3">
    3865                            {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>
    4069                            ) : (
    41                                 <Link className="btn btn-outline-info my-2 my-sm-0" to="/login">Login</Link>
     70                                <Link className="btn btn-outline-info ml-3" to="/login">Login</Link>
    4271                            )}
    4372                        </form>
Note: See TracChangeset for help on using the changeset viewer.