diff --git a/packages/manager/.changeset/pr-13282-fixed-1768483343450.md b/packages/manager/.changeset/pr-13282-fixed-1768483343450.md
new file mode 100644
index 00000000000..b5ccd623faa
--- /dev/null
+++ b/packages/manager/.changeset/pr-13282-fixed-1768483343450.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Fixed
+---
+
+IAM Delegation: User selector not working in Assign Role/Roles drawer ([#13282](https://github.com/linode/manager/pull/13282))
diff --git a/packages/manager/src/features/IAM/Delegations/AccountDelegations.test.tsx b/packages/manager/src/features/IAM/Delegations/AccountDelegations.test.tsx
index 5dc6036b295..6351aec3157 100644
--- a/packages/manager/src/features/IAM/Delegations/AccountDelegations.test.tsx
+++ b/packages/manager/src/features/IAM/Delegations/AccountDelegations.test.tsx
@@ -82,7 +82,7 @@ describe('AccountDelegations', () => {
});
await waitFor(() => {
- const emptyElement = screen.getByText(/No users added/);
+ const emptyElement = screen.getByText(/No items to display/);
expect(emptyElement).toBeInTheDocument();
});
});
diff --git a/packages/manager/src/features/IAM/Delegations/AccountDelegationsTable.tsx b/packages/manager/src/features/IAM/Delegations/AccountDelegationsTable.tsx
index bcb5b668fca..8fb001661c1 100644
--- a/packages/manager/src/features/IAM/Delegations/AccountDelegationsTable.tsx
+++ b/packages/manager/src/features/IAM/Delegations/AccountDelegationsTable.tsx
@@ -10,7 +10,7 @@ import { TableRowError } from 'src/components/TableRowError/TableRowError';
import { TableRowLoading } from 'src/components/TableRowLoading/TableRowLoading';
import { TableSortCell } from 'src/components/TableSortCell';
-import { NO_DELEGATIONS_TEXT } from '../Shared/constants';
+import { NO_ITEMS_TO_DISPLAY_TEXT } from '../Shared/constants';
import { AccountDelegationsTableRow } from './AccountDelegationsTableRow';
import type {
@@ -70,7 +70,7 @@ export const AccountDelegationsTable = ({
)}
{!isLoading && !error && (!delegations || delegations.length === 0) && (
-
+
)}
{!isLoading &&
!error &&
diff --git a/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx b/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx
index 9194cfd11b1..80f19031356 100644
--- a/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx
+++ b/packages/manager/src/features/IAM/Roles/RolesTable/AssignSelectedRolesDrawer.tsx
@@ -23,6 +23,7 @@ import { Link } from 'src/components/Link';
import { StyledLinkButtonBox } from 'src/components/SelectFirewallPanel/SelectFirewallPanel';
import { AssignSingleSelectedRole } from 'src/features/IAM/Roles/RolesTable/AssignSingleSelectedRole';
+import { usePermissions } from '../../hooks/usePermissions';
import { INTERNAL_ERROR_NO_CHANGES_SAVED } from '../../Shared/constants';
import { mergeAssignedRolesIntoExistingRoles } from '../../Shared/utilities';
@@ -75,17 +76,22 @@ export const AssignSelectedRolesDrawer = ({
}
: undefined;
+ const { data: permissions } = usePermissions('account', ['view_user']);
+
const {
data: accountUsers,
fetchNextPage,
hasNextPage,
isFetching: isFetchingAccountUsers,
isLoading: isLoadingAccountUsers,
- } = useAccountUsersInfiniteQuery({
- ...userSearchFilter,
- '+order': 'asc',
- '+order_by': 'username',
- });
+ } = useAccountUsersInfiniteQuery(
+ {
+ ...userSearchFilter,
+ '+order': 'asc',
+ '+order_by': 'username',
+ },
+ permissions?.view_user
+ );
const getUserOptions = useCallback(() => {
const users = accountUsers?.pages.flatMap((page) => page.data);
diff --git a/packages/manager/src/features/IAM/Shared/constants.ts b/packages/manager/src/features/IAM/Shared/constants.ts
index 4aefdba9001..d1538cd3d39 100644
--- a/packages/manager/src/features/IAM/Shared/constants.ts
+++ b/packages/manager/src/features/IAM/Shared/constants.ts
@@ -20,7 +20,8 @@ export const ERROR_STATE_TEXT =
'An unexpected error occurred. Refresh the page or try again later.';
// Delegation error messages
-export const NO_DELEGATIONS_TEXT = 'No users added.';
+export const NO_ITEMS_TO_DISPLAY_TEXT = 'No items to display.';
+export const NO_DELEGATED_USERS_TEXT = 'No users added.';
export const DELEGATION_VALIDATION_ERROR =
'At least one user must be selected as a delegate.';
diff --git a/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegations.tsx b/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegations.tsx
index 557f1904adc..b3ff008e566 100644
--- a/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegations.tsx
+++ b/packages/manager/src/features/IAM/Users/UserDelegations/UserDelegations.tsx
@@ -20,6 +20,7 @@ import { TableRow } from 'src/components/TableRow';
import { TableRowEmpty } from 'src/components/TableRowEmpty/TableRowEmpty';
import { TableSortCell } from 'src/components/TableSortCell';
import { useIsIAMDelegationEnabled } from 'src/features/IAM/hooks/useIsIAMEnabled';
+import { NO_DELEGATED_USERS_TEXT } from 'src/features/IAM/Shared/constants';
import { useOrderV2 } from 'src/hooks/useOrderV2';
import { usePaginationV2 } from 'src/hooks/usePaginationV2';
@@ -139,7 +140,10 @@ export const UserDelegations = () => {
}) => (
<>
{paginatedData?.length === 0 && (
-
+
)}
{paginatedData?.map((childAccount) => (
diff --git a/packages/queries/src/account/users.ts b/packages/queries/src/account/users.ts
index b0acd3e9e88..228f260d7f2 100644
--- a/packages/queries/src/account/users.ts
+++ b/packages/queries/src/account/users.ts
@@ -40,8 +40,6 @@ export const useAccountUsersInfiniteQuery = (
filter: Filter = {},
enabled = true,
) => {
- const { data: profile } = useProfile();
-
return useInfiniteQuery, APIError[]>({
getNextPageParam: ({ page, pages }) => {
if (page === pages) {
@@ -51,7 +49,7 @@ export const useAccountUsersInfiniteQuery = (
},
initialPageParam: 1,
...accountQueries.users._ctx.infinite(filter),
- enabled: enabled && !profile?.restricted,
+ enabled,
placeholderData: keepPreviousData,
});
};