diff --git a/demand-capacity-mgmt-frontend/src/components/common/TopMenu.tsx b/demand-capacity-mgmt-frontend/src/components/common/TopMenu.tsx index 190357c4..15e23493 100644 --- a/demand-capacity-mgmt-frontend/src/components/common/TopMenu.tsx +++ b/demand-capacity-mgmt-frontend/src/components/common/TopMenu.tsx @@ -21,9 +21,11 @@ */ import { useEffect, useState } from 'react'; +import { OverlayTrigger, Tooltip } from 'react-bootstrap'; import Container from 'react-bootstrap/Container'; import Nav from 'react-bootstrap/Nav'; import Navbar from 'react-bootstrap/Navbar'; +import { FaUserShield } from 'react-icons/fa'; import { FiLogOut, FiSettings } from 'react-icons/fi'; import { useNavigate } from "react-router-dom"; import CapacityGroupsProvider from '../../contexts/CapacityGroupsContextProvider'; @@ -104,8 +106,28 @@ function TopMenuLinks() {
Role: {user?.role.toLowerCase()} - - + User Settings} + > + + + {user?.role === 'ADMIN' && ( + Admin Dashboard} + > + + + + + )} + Logout} + > + + diff --git a/demand-capacity-mgmt-frontend/src/components/pages/AdminPage.tsx b/demand-capacity-mgmt-frontend/src/components/pages/AdminPage.tsx index 9a0439fe..cbf68714 100644 --- a/demand-capacity-mgmt-frontend/src/components/pages/AdminPage.tsx +++ b/demand-capacity-mgmt-frontend/src/components/pages/AdminPage.tsx @@ -26,6 +26,7 @@ import { useEffect, useState } from 'react'; import { Col, Nav, Row, Tab, TabContent } from 'react-bootstrap'; import { FaBell, FaClock, FaCogs, FaFingerprint, FaHeartbeat, FaKey } from 'react-icons/fa'; import { FcEngineering } from 'react-icons/fc'; +import { useNavigate } from 'react-router-dom'; import { useUser } from '../../contexts/UserContext'; import { LoadingMessage } from '../common/LoadingMessages'; @@ -34,11 +35,13 @@ const AdminPage = () => { const [loading, setLoading] = useState(false); const [activeTab, setActiveTab] = useState('general'); + const navigate = useNavigate() useEffect(() => { - console.log(user) - }, []); - + if (user?.role !== 'ADMIN') { + navigate('/error'); + } + }, [user]); if (loading) { return ; // Show loading spinner when data is loading diff --git a/demand-capacity-mgmt-frontend/src/contexts/InfoMenuContextProvider.tsx b/demand-capacity-mgmt-frontend/src/contexts/InfoMenuContextProvider.tsx index e920d993..16ace9f9 100644 --- a/demand-capacity-mgmt-frontend/src/contexts/InfoMenuContextProvider.tsx +++ b/demand-capacity-mgmt-frontend/src/contexts/InfoMenuContextProvider.tsx @@ -22,6 +22,7 @@ import React, { FunctionComponent, createContext, useCallback, useContext, useEffect, useState } from 'react'; + import { InfoMenuData } from '../interfaces/infomenu_interfaces'; import createAPIInstance from "../util/Api"; import { CapacityGroupContext } from './CapacityGroupsContextProvider';