Skip to content

Commit 7293be0

Browse files
authored
Hide remove domain button on verified orgs for non-super-admins (unless NXDOMAIN) (canada-ca#6008)
1 parent 375f81c commit 7293be0

4 files changed

Lines changed: 25 additions & 18 deletions

File tree

frontend/src/admin/AdminDomains.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
import { AddIcon, EditIcon, MinusIcon, PlusSquareIcon } from '@chakra-ui/icons'
2828
import { useMutation } from '@apollo/client'
2929
import { useLingui } from '@lingui/react'
30-
import { number, string } from 'prop-types'
30+
import { bool, number, string } from 'prop-types'
3131

3232
import { AdminDomainModal } from './AdminDomainModal'
3333
import { AdminDomainCard } from './AdminDomainCard'
@@ -48,7 +48,7 @@ import { InfoBox, InfoButton, InfoPanel } from '../components/InfoPanel'
4848
import { FilterList } from '../domains/FilterList'
4949
import { domainSearchTip } from '../domains/DomainsPage'
5050

51-
export function AdminDomains({ orgSlug, orgId }) {
51+
export function AdminDomains({ orgSlug, orgId, verified, permission }) {
5252
const toast = useToast()
5353
const { i18n } = useLingui()
5454

@@ -326,17 +326,19 @@ export function AdminDomains({ orgSlug, orgId }) {
326326
{index === 0 && <Divider borderBottomColor="gray.400" />}
327327
<Flex p="1" align="center" rounded="md" mb="1">
328328
<Stack direction="row" flexGrow="0" mr="2">
329-
<IconButton
330-
data-testid={`remove-${index}`}
331-
onClick={() => {
332-
setSelectedRemoveProps({ domain, domainId, rcode })
333-
removeOnOpen()
334-
}}
335-
variant="danger"
336-
px="2"
337-
icon={<MinusIcon />}
338-
aria-label={'Remove ' + domain}
339-
/>
329+
{(!verified || permission === 'SUPER_ADMIN' || rcode === 'NXDOMAIN') && (
330+
<IconButton
331+
data-testid={`remove-${index}`}
332+
onClick={() => {
333+
setSelectedRemoveProps({ domain, domainId, rcode })
334+
removeOnOpen()
335+
}}
336+
variant="danger"
337+
px="2"
338+
icon={<MinusIcon />}
339+
aria-label={'Remove ' + domain}
340+
/>
341+
)}
340342
<IconButton
341343
data-testid={`edit-${index}`}
342344
variant="primary"
@@ -594,6 +596,7 @@ export function AdminDomains({ orgSlug, orgId }) {
594596
AdminDomains.propTypes = {
595597
orgSlug: string.isRequired,
596598
orgId: string.isRequired,
599+
verified: bool,
597600
domainsPerPage: number,
598601
permission: string,
599602
}

frontend/src/admin/AdminPage.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ export default function AdminPage() {
6969
setOrgDetails({
7070
slug: data?.findMyOrganizations?.edges[0]?.node?.slug,
7171
id: data?.findMyOrganizations?.edges[0]?.node?.id,
72+
verified: data?.findMyOrganizations?.edges[0]?.node?.verified,
7273
})
7374
setSelectedOrg(data?.findMyOrganizations?.edges[0]?.node?.name || 'none')
7475
}
@@ -95,8 +96,8 @@ export default function AdminPage() {
9596
} else {
9697
options = []
9798
data.findMyOrganizations?.edges.forEach((edge) => {
98-
const { slug, name, id } = edge.node
99-
options.push({ label: name, value: { slug: slug, id: id } })
99+
const { slug, name, id, verified } = edge.node
100+
options.push({ label: name, value: { slug: slug, id: id, verified: verified } })
100101
})
101102
dropdown = (
102103
<Dropdown
@@ -177,6 +178,7 @@ export default function AdminPage() {
177178
activeMenu={activeMenu}
178179
orgSlug={orgDetails.slug}
179180
orgId={orgDetails.id}
181+
verified={orgDetails.verified}
180182
permission={data?.isUserSuperAdmin ? 'SUPER_ADMIN' : 'ADMIN'}
181183
mr="4"
182184
/>

frontend/src/admin/AdminPanel.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react'
22
import { Stack, Tab, TabList, TabPanel, TabPanels, Tabs } from '@chakra-ui/react'
33
import { Trans } from '@lingui/macro'
4-
import { string } from 'prop-types'
4+
import { bool, string } from 'prop-types'
55
import { ErrorBoundary } from 'react-error-boundary'
66

77
import { AdminDomains } from './AdminDomains'
@@ -11,7 +11,7 @@ import { ErrorFallbackMessage } from '../components/ErrorFallbackMessage'
1111
import { AuditLogTable } from './AuditLogTable'
1212
import { TourComponent } from '../userOnboarding/components/TourComponent'
1313

14-
export function AdminPanel({ activeMenu, orgSlug, permission, orgId }) {
14+
export function AdminPanel({ activeMenu, orgSlug, permission, orgId, verified }) {
1515
return (
1616
<Stack spacing={10}>
1717
<TourComponent />
@@ -31,7 +31,7 @@ export function AdminPanel({ activeMenu, orgSlug, permission, orgId }) {
3131
<TabPanels>
3232
<TabPanel>
3333
<ErrorBoundary FallbackComponent={ErrorFallbackMessage}>
34-
<AdminDomains orgSlug={orgSlug} orgId={orgId} />
34+
<AdminDomains orgSlug={orgSlug} orgId={orgId} verified={verified} permission={permission} />
3535
</ErrorBoundary>
3636
</TabPanel>
3737
<TabPanel>
@@ -61,4 +61,5 @@ AdminPanel.propTypes = {
6161
orgSlug: string.isRequired,
6262
permission: string.isRequired,
6363
orgId: string,
64+
verified: bool,
6465
}

frontend/src/graphql/queries.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,6 +1145,7 @@ export const ADMIN_PAGE = gql`
11451145
acronym
11461146
slug
11471147
name
1148+
verified
11481149
}
11491150
}
11501151
}

0 commit comments

Comments
 (0)