diff --git a/packages/manager/.changeset/pr-12946-fixed-1759415335272.md b/packages/manager/.changeset/pr-12946-fixed-1759415335272.md new file mode 100644 index 00000000000..2a683e7cc14 --- /dev/null +++ b/packages/manager/.changeset/pr-12946-fixed-1759415335272.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Fixed +--- + +IAM - isIAMEnabled LA access check ([#12946](https://github.com/linode/manager/pull/12946)) diff --git a/packages/manager/src/features/IAM/hooks/useIsIAMEnabled.ts b/packages/manager/src/features/IAM/hooks/useIsIAMEnabled.ts index 7cd61bf8280..c7e17fc8682 100644 --- a/packages/manager/src/features/IAM/hooks/useIsIAMEnabled.ts +++ b/packages/manager/src/features/IAM/hooks/useIsIAMEnabled.ts @@ -19,17 +19,17 @@ import type { FlagSet } from 'src/featureFlags'; export const useIsIAMEnabled = () => { const flags = useFlags(); const { data: profile } = useProfile(); - const { data: roles } = useAccountRoles( + const { data: roles, isLoading: isLoadingRoles } = useAccountRoles( flags?.iam?.enabled === true && !profile?.restricted ); - const { data: permissions } = useUserAccountPermissions( - flags?.iam?.enabled === true - ); + const { data: permissions, isLoading: isLoadingPermissions } = + useUserAccountPermissions(flags?.iam?.enabled === true); return { isIAMBeta: flags.iam?.beta, - isIAMEnabled: flags?.iam?.enabled && Boolean(roles || permissions?.length), + isIAMEnabled: flags?.iam?.enabled && Boolean(roles || permissions), + isLoading: isLoadingRoles || isLoadingPermissions, }; }; @@ -60,7 +60,7 @@ export const checkIAMEnabled = async ( const permissions = await queryClient.ensureQueryData( queryOptions(iamQueries.user(profile.username)._ctx.accountPermissions) ); - return Boolean(permissions.length); + return Boolean(permissions); } // For non-restricted users ONLY, get roles diff --git a/packages/manager/src/routes/IAM/IAMRoute.tsx b/packages/manager/src/routes/IAM/IAMRoute.tsx index 86627b93f1f..9c432c9ffa0 100644 --- a/packages/manager/src/routes/IAM/IAMRoute.tsx +++ b/packages/manager/src/routes/IAM/IAMRoute.tsx @@ -8,12 +8,18 @@ import { SuspenseLoader } from 'src/components/SuspenseLoader'; import { useIsIAMEnabled } from 'src/features/IAM/hooks/useIsIAMEnabled'; export const IAMRoute = () => { - const { isIAMEnabled } = useIsIAMEnabled(); + const { isIAMEnabled, isLoading } = useIsIAMEnabled(); return ( }> - {isIAMEnabled ? : } + {isLoading ? ( + + ) : isIAMEnabled ? ( + + ) : ( + + )} ); };