From c473a28cd3dad169cadea1a79572c36eff610992 Mon Sep 17 00:00:00 2001 From: Dustin Deus Date: Tue, 9 Apr 2024 01:46:32 +0200 Subject: [PATCH] fix: everyone with write access can create api keys (#711) --- .../src/pages/[organizationSlug]/apikeys.tsx | 131 +++++++++--------- 1 file changed, 64 insertions(+), 67 deletions(-) diff --git a/studio/src/pages/[organizationSlug]/apikeys.tsx b/studio/src/pages/[organizationSlug]/apikeys.tsx index c8afbe9e20..af5e0422e1 100644 --- a/studio/src/pages/[organizationSlug]/apikeys.tsx +++ b/studio/src/pages/[organizationSlug]/apikeys.tsx @@ -90,7 +90,9 @@ const CreateAPIKeyDialog = ({ const { mutate, isPending } = useMutation(createAPIKey.useMutation()); const { data } = useQuery(getUserAccessibleResources.useQuery()); - const { data: permissionsData } = useQuery(getUserAccessiblePermissions.useQuery()); + const { data: permissionsData } = useQuery( + getUserAccessiblePermissions.useQuery(), + ); const federatedGraphs = data?.federatedGraphs || []; const subgraphs = data?.subgraphs || []; const isAdmin = user?.currentOrganization.roles.includes("admin"); @@ -209,21 +211,6 @@ const CreateAPIKeyDialog = ({ return result; }, {}); - // check if the user has access to create api keys only when rbac is enabled - if ( - rbac && - !(isAdmin || federatedGraphs.length > 0 || subgraphs.length > 0) - ) { - return ( - - ); - } - return ( @@ -271,52 +258,55 @@ const CreateAPIKeyDialog = ({ - {isAdmin && permissionsData && permissionsData.permissions.length > 0 && ( -
-
- Permissions - - { - "Select permissions for the API key." - } - -
- {permissionsData.permissions.map((permission) => { - return ( -
- { - if (checked) { - setSelectedPermissions([ - ...Array.from( - new Set([...selectedPermissions, permission.value]), - ), - ]); - } else { - setSelectedPermissions([ - ...selectedPermissions.filter( - (p) => p !== permission.value, - ), - ]); - } - }} - /> -
+ ); + })} +
+ )} {rbac && (
@@ -679,6 +669,8 @@ export const Empty = ({ open: boolean; setOpen: Dispatch>; }) => { + const user = useContext(UserContext); + return ( } @@ -698,12 +690,17 @@ export const Empty = ({ } actions={
- + {checkUserAccess({ + rolesToBe: ["admin", "developer"], + userRoles: user?.currentOrganization.roles || [], + }) && ( + + )}
} />