From 93de653973c8463eabe8dbeb8ca463a6801dfbbd Mon Sep 17 00:00:00 2001 From: Jonathan King Date: Wed, 3 May 2023 14:04:17 -0400 Subject: [PATCH] ui: Hide organization settings when user is not admin (PROJQUAY-4053) (#1829) - Remove organization settings when user not admin --- web/src/resources/OrganizationResource.ts | 1 + .../Organization/Organization.tsx | 27 ++++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/web/src/resources/OrganizationResource.ts b/web/src/resources/OrganizationResource.ts index e5a64b7c0..c356ad39e 100644 --- a/web/src/resources/OrganizationResource.ts +++ b/web/src/resources/OrganizationResource.ts @@ -15,6 +15,7 @@ export interface IOrganization { can_create_repo?: boolean; public?: boolean; is_org_admin?: boolean; + is_admin?: boolean; preferred_namespace?: boolean; teams?: string[]; } diff --git a/web/src/routes/OrganizationsList/Organization/Organization.tsx b/web/src/routes/OrganizationsList/Organization/Organization.tsx index 7dc7a9879..ac1421783 100644 --- a/web/src/routes/OrganizationsList/Organization/Organization.tsx +++ b/web/src/routes/OrganizationsList/Organization/Organization.tsx @@ -12,6 +12,7 @@ import {useCallback, useState} from 'react'; import RepositoriesList from 'src/routes/RepositoriesList/RepositoriesList'; import Settings from './Tabs/Settings/Settings'; import {QuayBreadcrumb} from 'src/components/breadcrumb/Breadcrumb'; +import { useOrganization } from 'src/hooks/UseOrganization'; import RobotAccountsList from 'src/routes/RepositoriesList/RobotAccountsList'; export default function Organization() { @@ -19,6 +20,8 @@ export default function Organization() { const {organizationName} = useParams(); const [searchParams, setSearchParams] = useSearchParams(); + const {organization} = useOrganization(orgName) + const [activeTabKey, setActiveTabKey] = useState( searchParams.get('tab') || 'Repositories', ); @@ -35,14 +38,18 @@ export default function Organization() { { name: 'Repositories', component: , + visible: true, }, { name: 'Robot accounts', component: , + visible: organization.is_org_admin || organization.is_admin, + }, { name: 'Settings', component: , + visible: organization.is_org_admin || organization.is_admin, }, ]; @@ -62,15 +69,17 @@ export default function Organization() { padding={{default: 'noPadding'}} > - {repositoriesSubNav.map((nav) => ( - {nav.name}} - > - {nav.component} - - ))} + {repositoriesSubNav.map((nav) => { + nav.visible && ( + {nav.name}} + > + {nav.component} + + ); + })}