Skip to content

Commit 601e716

Browse files
fix(frontend): Allow change request deletion based on API permissions (#7772)
1 parent 56f2ad6 commit 601e716

2 files changed

Lines changed: 21 additions & 5 deletions

File tree

frontend/web/components/pages/ChangeRequestDetailPage.tsx

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ const ChangeRequestDetailPage: FC<ChangeRequestPageType> = ({ match }) => {
8989
permission: EnvironmentPermission.UPDATE_FEATURE_STATE,
9090
tags: projectFlag?.tags,
9191
})
92+
const isEnvironmentAdmin = useHasPermission({
93+
id: environmentId,
94+
level: 'environment',
95+
permission: EnvironmentPermission.ADMIN,
96+
})
9297

9398
useEffect(() => {
9499
AppActions.getChangeRequest(id, projectId, environmentId)
@@ -338,6 +343,7 @@ const ChangeRequestDetailPage: FC<ChangeRequestPageType> = ({ match }) => {
338343
/>
339344
<ChangeRequestPageInner
340345
hidePublish={!projectFlag}
346+
canManageChangeRequests={isEnvironmentAdmin?.permission}
341347
publishChangeRequest={publishChangeRequest}
342348
approvePermission={approvePermission?.permission}
343349
approveChangeRequest={approveChangeRequest}
@@ -420,6 +426,7 @@ type ChangeRequestPageInnerType = {
420426
approvePermission: boolean | undefined
421427
publishPermission: boolean | undefined
422428
isScheduled: boolean
429+
canManageChangeRequests?: boolean
423430
hidePublish?: boolean
424431
scheduledDate?: moment.Moment | null
425432
changeRequest: ProjectChangeRequest | ChangeRequest | undefined
@@ -434,6 +441,7 @@ export const ChangeRequestPageInner: FC<ChangeRequestPageInnerType> = ({
434441
addOwner,
435442
approveChangeRequest,
436443
approvePermission,
444+
canManageChangeRequests,
437445
changeRequest,
438446
deleteChangeRequest,
439447
editChangeRequest,
@@ -539,13 +547,13 @@ export const ChangeRequestPageInner: FC<ChangeRequestPageInnerType> = ({
539547
changeRequest &&
540548
changeRequest.user &&
541549
orgUsers.find((v) => v.id === changeRequest.user)
542-
const isYours = AccountStore.getUserId() === changeRequest.user
550+
543551
return (
544552
<div>
545553
<PageTitle
546554
cta={
547555
(!changeRequest.committed_at || isScheduled) &&
548-
isYours && (
556+
(isYourChangeRequest || !!canManageChangeRequests) && (
549557
<Row>
550558
<Button theme='secondary' onClick={deleteChangeRequest}>
551559
Delete
@@ -564,7 +572,7 @@ export const ChangeRequestPageInner: FC<ChangeRequestPageInnerType> = ({
564572
by {user ? `${user.first_name} ${user.last_name}` : 'Unknown user'}
565573
</PageTitle>
566574
<p className='mt-2'>{changeRequest.description}</p>
567-
{hasApprovals && isYours && !changeRequest.committed_at && (
575+
{hasApprovals && isYourChangeRequest && !changeRequest.committed_at && (
568576
<div className='col-md-6 mb-4'>
569577
<InfoMessage>
570578
This change request has been approved and can no longer be edited.
@@ -652,7 +660,9 @@ export const ChangeRequestPageInner: FC<ChangeRequestPageInnerType> = ({
652660
<Row
653661
key={g.id}
654662
onClick={
655-
hasApprovals ? undefined : () => removeOwner(g.id, false)
663+
hasApprovals
664+
? undefined
665+
: () => removeOwner(g.id, false)
656666
}
657667
className='chip'
658668
style={{

frontend/web/components/pages/ProjectChangeRequestDetailPage.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ const ProjectChangeRequestDetailPage: FC<ProjectChangeRequestPageType> = ({
4545
level: 'project',
4646
permission: ProjectPermission.MANAGE_SEGMENTS,
4747
})
48+
const manageChangeRequestsPermission = useHasPermission({
49+
id: projectId,
50+
level: 'project',
51+
permission: ProjectPermission.MANAGE_PROJECT_LEVEL_CHANGE_REQUESTS,
52+
})
4853
const { data: project } = useGetProjectQuery({ id: projectId })
4954
const [actionChangeRequest, { isLoading: isActioning }] =
5055
useActionProjectChangeRequestMutation({})
@@ -168,7 +173,7 @@ const ProjectChangeRequestDetailPage: FC<ProjectChangeRequestPageType> = ({
168173
</div>
169174
),
170175
onYes: () => {
171-
if(!changeRequest) return
176+
if (!changeRequest) return
172177
actionChangeRequest({
173178
actionType: 'commit',
174179
id: `${changeRequest.id}`,
@@ -225,6 +230,7 @@ const ProjectChangeRequestDetailPage: FC<ProjectChangeRequestPageType> = ({
225230
currentPage={changeRequest.title}
226231
/>
227232
<ChangeRequestPageInner
233+
canManageChangeRequests={manageChangeRequestsPermission?.permission}
228234
isScheduled={false}
229235
publishChangeRequest={publishChangeRequest}
230236
approvePermission={approvePermission?.permission}

0 commit comments

Comments
 (0)