diff --git a/src/apps/copilots/src/pages/copilot-requests/index.tsx b/src/apps/copilots/src/pages/copilot-requests/index.tsx index 2378ca122..5430fdd9d 100644 --- a/src/apps/copilots/src/pages/copilot-requests/index.tsx +++ b/src/apps/copilots/src/pages/copilot-requests/index.tsx @@ -1,4 +1,4 @@ -import { FC, useCallback, useMemo } from 'react' +import { FC, useCallback, useContext, useMemo } from 'react' import { find } from 'lodash' import { NavigateFunction, Params, useNavigate, useParams } from 'react-router-dom' @@ -14,6 +14,7 @@ import { TableColumn, useConfirmationModal, } from '~/libs/ui' +import { profileContext, ProfileContextData, UserRole } from '~/libs/core' import { ProjectTypeLabels } from '../../constants' import { approveCopilotRequest, CopilotRequestsResponse, useCopilotRequests } from '../../services/copilot-requests' @@ -121,6 +122,12 @@ const CopilotRequestsPage: FC = () => { const navigate: NavigateFunction = useNavigate() const routeParams: Params = useParams() + const { profile }: ProfileContextData = useContext(profileContext) + const isAdminOrPM: boolean = useMemo( + () => !!profile?.roles?.some(role => role === UserRole.administrator || role === UserRole.projectManager), + [profile], + ) + const { data: requests = [], isValidating: requestsLoading }: CopilotRequestsResponse = useCopilotRequests() const projectIds = useMemo(() => ( (new Set(requests.map(r => r.projectId)) @@ -158,6 +165,15 @@ const CopilotRequestsPage: FC = () => { onClick: () => navigate(copilotRoutesMap.CopilotRequestForm), } + if (!isAdminOrPM) { + return ( + + Access Denied +

You do not have required permissions to access this page.

+
+ ) + } + return (