summaryrefslogtreecommitdiff
path: root/microservices/04-react-app/src/components/Navbar.jsx
blob: bc791382c99deaa96beb9c1ee99c9594c72d77c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import { Link, NavLink } from "react-router";
import { useAuth } from "../contexts/AuthContext"
import RoleGuard from "./RoleGuard";

const Navbar = () => {
    const {user, login, logout, isLoggedIn} = useAuth();

    return (
        <nav className="navbar">
            {/* Logo */}
            <Link to="#" className="nav-link">BrandName</Link>

            {/* Mobile Toggle (Checkbox Hack) */}
            <input type="checkbox" id="nav-toggle" className="nav-toggle" />
            <label htmlFor="nav-toggle" className="hamburger">
                <span></span>
                <span></span>
                <span></span>
            </label>

            <ul className="nav-menu">
                <li>
                    <NavLink className="nav-link" to="/" end>
                        Home
                    </NavLink>
                </li>
                <li>
                    <NavLink className="nav-link" to="/about" end>
                        About
                    </NavLink>
                </li>

                {isLoggedIn() && (
                <li>
                    <NavLink className="nav-link" to="/posts" end>
                        Posts
                    </NavLink>
                </li>
                )}

                <RoleGuard allowedRoles={['ADMIN']}>
                    <li>
                        <NavLink className="nav-link" to="/admin" end>
                            Admin
                        </NavLink>
                    </li>
                </RoleGuard>

                {!isLoggedIn() && (
                    <>
                        <li>
                            <Link to="#" className="nav-link" onClick={login}>Login</Link>
                        </li>
                        <li>
                            <NavLink className="nav-link" to="/register">Register</NavLink>
                        </li>
                    </>
                )}

                {isLoggedIn() && (
                    <li>
                        <Link to="#" className="nav-link" onClick={logout}>Logout {user.name}</Link>
                    </li>
                )}
            </ul>
        </nav>
    )
}

export default Navbar