1- import { FC , useCallback , useMemo } from 'react'
1+ import { FC , useCallback , useContext , useMemo } from 'react'
22import { find } from 'lodash'
33import { NavigateFunction , Params , useNavigate , useParams } from 'react-router-dom'
44
@@ -14,6 +14,7 @@ import {
1414 TableColumn ,
1515 useConfirmationModal ,
1616} from '~/libs/ui'
17+ import { profileContext , ProfileContextData , UserRole } from '~/libs/core'
1718
1819import { ProjectTypeLabels } from '../../constants'
1920import { approveCopilotRequest , CopilotRequestsResponse , useCopilotRequests } from '../../services/copilot-requests'
@@ -121,6 +122,12 @@ const CopilotRequestsPage: FC = () => {
121122 const navigate : NavigateFunction = useNavigate ( )
122123 const routeParams : Params < string > = useParams ( )
123124
125+ const { profile } : ProfileContextData = useContext ( profileContext )
126+ const isAdminOrPM : boolean = useMemo (
127+ ( ) => ! ! profile ?. roles ?. some ( role => role === UserRole . administrator || role === UserRole . projectManager ) ,
128+ [ profile ] ,
129+ )
130+
124131 const { data : requests = [ ] , isValidating : requestsLoading } : CopilotRequestsResponse = useCopilotRequests ( )
125132 const projectIds = useMemo ( ( ) => (
126133 ( new Set ( requests . map ( r => r . projectId ) )
@@ -158,6 +165,15 @@ const CopilotRequestsPage: FC = () => {
158165 onClick : ( ) => navigate ( copilotRoutesMap . CopilotRequestForm ) ,
159166 }
160167
168+ if ( ! isAdminOrPM ) {
169+ return (
170+ < ContentLayout title = 'Copilot Requests' >
171+ < PageTitle > Access Denied</ PageTitle >
172+ < p > You do not have required permissions to access this page.</ p >
173+ </ ContentLayout >
174+ )
175+ }
176+
161177 return (
162178 < ContentLayout
163179 title = 'Copilot Requests'
0 commit comments