From 84168e293d1180ece88123678a9141779af8eb0a Mon Sep 17 00:00:00 2001 From: Alban Bailly Date: Fri, 16 Jan 2026 12:09:16 +0100 Subject: [PATCH 1/2] routing tighhtening --- .../Defaults/defaultsLandingLazyRoute.ts | 2 +- packages/manager/src/routes/IAM/IAMRoute.tsx | 11 +----- packages/manager/src/routes/IAM/index.ts | 35 +++++++++++++++---- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/packages/manager/src/features/IAM/Roles/Defaults/defaultsLandingLazyRoute.ts b/packages/manager/src/features/IAM/Roles/Defaults/defaultsLandingLazyRoute.ts index 3f2e27a0003..2212dc0c25b 100644 --- a/packages/manager/src/features/IAM/Roles/Defaults/defaultsLandingLazyRoute.ts +++ b/packages/manager/src/features/IAM/Roles/Defaults/defaultsLandingLazyRoute.ts @@ -2,6 +2,6 @@ import { createLazyRoute } from '@tanstack/react-router'; import { DefaultsLanding } from './DefaultsLanding'; -export const defaultsLandingLazyRoute = createLazyRoute('/iam/roles/')({ +export const defaultsLandingLazyRoute = createLazyRoute('/iam/roles')({ component: DefaultsLanding, }); diff --git a/packages/manager/src/routes/IAM/IAMRoute.tsx b/packages/manager/src/routes/IAM/IAMRoute.tsx index 9c432c9ffa0..b57c05547f5 100644 --- a/packages/manager/src/routes/IAM/IAMRoute.tsx +++ b/packages/manager/src/routes/IAM/IAMRoute.tsx @@ -1,25 +1,16 @@ -import { NotFound } from '@linode/ui'; import { Outlet } from '@tanstack/react-router'; import React from 'react'; import { DocumentTitleSegment } from 'src/components/DocumentTitle'; import { ProductInformationBanner } from 'src/components/ProductInformationBanner/ProductInformationBanner'; import { SuspenseLoader } from 'src/components/SuspenseLoader'; -import { useIsIAMEnabled } from 'src/features/IAM/hooks/useIsIAMEnabled'; export const IAMRoute = () => { - const { isIAMEnabled, isLoading } = useIsIAMEnabled(); return ( }> - {isLoading ? ( - - ) : isIAMEnabled ? ( - - ) : ( - - )} + ); }; diff --git a/packages/manager/src/routes/IAM/index.ts b/packages/manager/src/routes/IAM/index.ts index 8f5cf25a315..cb4ab4a9e81 100644 --- a/packages/manager/src/routes/IAM/index.ts +++ b/packages/manager/src/routes/IAM/index.ts @@ -46,6 +46,20 @@ const iamTabsRoute = createRoute({ const iamUsersRoute = createRoute({ getParentRoute: () => iamTabsRoute, path: 'users', + beforeLoad: async ({ context }) => { + const isIAMEnabled = await checkIAMEnabled( + context.queryClient, + context.flags, + context.profile + ); + + if (!isIAMEnabled) { + throw redirect({ + to: '/users', + replace: true, + }); + } + }, }).lazy(() => import('src/features/IAM/Users/UsersTable/usersLandingLazyRoute').then( (m) => m.usersLandingLazyRoute @@ -72,16 +86,11 @@ const iamRolesRoute = createRoute({ if (!isIAMEnabled) { throw redirect({ - to: '/account/users', + to: '/users', replace: true, }); } }, -}); - -const iamRolesIndexRoute = createRoute({ - getParentRoute: () => iamRolesRoute, - path: '/', }).lazy(() => import('src/features/IAM/Roles/rolesLandingLazyRoute').then( (m) => m.rolesLandingLazyRoute @@ -142,6 +151,19 @@ const iamDelegationsRoute = createRoute({ const isDelegationEnabled = context?.flags?.iamDelegation?.enabled; const profile = context?.profile; + const isIAMEnabled = await checkIAMEnabled( + context.queryClient, + context.flags, + context.profile + ); + + if (!isIAMEnabled) { + throw redirect({ + to: '/users', + replace: true, + }); + } + const isChildAccount = profile?.user_type === 'child'; if (!isDelegationEnabled || isChildAccount) { throw redirect({ @@ -401,7 +423,6 @@ const iamUserNameEntitiesCatchAllRoute = createRoute({ export const iamRouteTree = iamRoute.addChildren([ iamTabsRoute.addChildren([ iamRolesRoute.addChildren([ - iamRolesIndexRoute, iamDefaultsTabsRoute.addChildren([ iamDefaultRolesRoute, iamDefaultEntityAccessRoute, From f4dc222f8c6ca36b3a2241dffece2e89e5859dc1 Mon Sep 17 00:00:00 2001 From: Alban Bailly Date: Fri, 16 Jan 2026 12:39:17 +0100 Subject: [PATCH 2/2] Added changeset: IAM routing cleanup --- packages/manager/.changeset/pr-13288-fixed-1768563557558.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-13288-fixed-1768563557558.md diff --git a/packages/manager/.changeset/pr-13288-fixed-1768563557558.md b/packages/manager/.changeset/pr-13288-fixed-1768563557558.md new file mode 100644 index 00000000000..9adf04eb402 --- /dev/null +++ b/packages/manager/.changeset/pr-13288-fixed-1768563557558.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Fixed +--- + +IAM routing cleanup ([#13288](https://github.com/linode/manager/pull/13288))