Ignore:
Timestamp:
02/09/26 21:36:40 (5 months ago)
Author:
Andrej <asumanovski@…>
Branches:
master
Children:
8615885
Parents:
140d098
Message:

Made authentication on frontend and backend

File:
1 edited

Legend:

Unmodified
Added
Removed
  • frontend/src/pages/LandingPage/components/NavbarLanding.jsx

    r140d098 r3ebe47c  
    1 import React from "react";
     1import React, { useEffect, useState } from "react";
     2import { Link, useNavigate } from "react-router-dom";
    23import logo from "../../../assets/logo.png";
    34
    45const NavbarLanding = () => {
     6  const navigate = useNavigate();
     7  const [isAuthed, setIsAuthed] = useState(() =>
     8    Boolean(localStorage.getItem("authToken")),
     9  );
     10
     11  useEffect(() => {
     12    const onStorage = (e) => {
     13      if (e.key === "authToken") {
     14        setIsAuthed(Boolean(e.newValue));
     15      }
     16    };
     17    window.addEventListener("storage", onStorage);
     18    return () => window.removeEventListener("storage", onStorage);
     19  }, []);
     20
     21  const onLogout = () => {
     22    localStorage.removeItem("authToken");
     23    localStorage.removeItem("authUser");
     24    setIsAuthed(false);
     25    navigate("/", { replace: true });
     26  };
     27
    528  return (
    629    <div className="navbar bg-neutral shadow-sm">
    730      <div className="navbar-start">
    8         <a className="btn btn-ghost" aria-label="Trekr home">
     31        <Link className="btn btn-ghost" aria-label="Trekr home" to="/">
    932          <img src={logo} alt="Trekr" className="h-12 w-auto rounded-2xl" />
    10         </a>
     33        </Link>
    1134      </div>
    1235      <div className="navbar-end">
    13         <button className="btn bg-black text-green-200 border-black hover:bg-black/90 hover:border-black px-8 mr-6">
    14           Start Tracking
    15         </button>
     36        {isAuthed ? (
     37          <div className="flex items-center gap-2 mr-6">
     38            <Link className="btn btn-primary" to="/dashboard">
     39              Dashboard
     40            </Link>
     41            <button className="btn btn-outline" onClick={onLogout}>
     42              Logout
     43            </button>
     44          </div>
     45        ) : (
     46          <Link
     47            className="btn bg-black text-green-200 border-black hover:bg-black/90 hover:border-black px-8 mr-6"
     48            to="/login"
     49          >
     50            Start Tracking
     51          </Link>
     52        )}
    1653      </div>
    1754    </div>
Note: See TracChangeset for help on using the changeset viewer.