Skip to content

Commit 02ce696

Browse files
feat: [UIE-9734] - IAM: fix perm check (#13160)
* feat: [UIE-9734] - IAM: fix perm check * update perm check
1 parent bbddca5 commit 02ce696

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

packages/manager/src/features/Firewalls/FirewallDetail/Devices/RemoveDeviceDialog.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ export const RemoveDeviceDialog = React.memo((props: Props) => {
5555
const { data: firewallPermissions } = usePermissions(
5656
'firewall',
5757
['delete_firewall_device'],
58-
firewallId
58+
firewallId,
59+
firewallId !== -1
5960
);
6061

6162
const { data: linodePermissions } = usePermissions(

packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/LinodeFirewalls/LinodeFirewalls.test.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const queryMocks = vi.hoisted(() => ({
2626
userPermissions: vi.fn(() => ({
2727
data: {
2828
apply_linode_firewalls: false,
29+
update_linode: false,
2930
delete_firewall_device: false,
3031
},
3132
})),
@@ -96,10 +97,11 @@ describe('LinodeFirewalls', () => {
9697
expect(addFirewallBtn).toBeDisabled();
9798
});
9899

99-
it("should enable 'Unassign' button if the user has delete_firewall_device permission", async () => {
100+
it("should enable 'Unassign' button if the user has update_linode and delete_firewall_device permission", async () => {
100101
queryMocks.userPermissions.mockReturnValue({
101102
data: {
102103
...queryMocks.userPermissions().data,
104+
update_linode: true,
103105
delete_firewall_device: true,
104106
},
105107
});
@@ -120,10 +122,11 @@ describe('LinodeFirewalls', () => {
120122
expect(unassignFirewallBtn).toBeEnabled();
121123
});
122124

123-
it("should disable 'Unassign' button if the user doesn't have delete_firewall_device permission", async () => {
125+
it("should disable 'Unassign' button if the user doesn't have update_linode and delete_firewall_device permission", async () => {
124126
queryMocks.userPermissions.mockReturnValue({
125127
data: {
126128
...queryMocks.userPermissions().data,
129+
update_linode: false,
127130
delete_firewall_device: false,
128131
},
129132
});

packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/LinodeFirewalls/LinodeFirewallsActionMenu.tsx

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,31 @@ import type { Action } from 'src/components/ActionMenu/ActionMenu';
88

99
interface LinodeFirewallsActionMenuProps {
1010
firewallID: number;
11+
linodeID: number;
1112
onUnassign: () => void;
1213
}
1314

1415
export const LinodeFirewallsActionMenu = (
1516
props: LinodeFirewallsActionMenuProps
1617
) => {
17-
const { firewallID, onUnassign } = props;
18+
const { onUnassign, linodeID, firewallID } = props;
1819

19-
const { data: permissions } = usePermissions(
20+
const { data: linodePermissions } = usePermissions(
21+
'linode',
22+
['update_linode'],
23+
linodeID
24+
);
25+
26+
const { data: firewallPermissions } = usePermissions(
2027
'firewall',
2128
['delete_firewall_device'],
22-
firewallID,
23-
true
29+
firewallID
2430
);
2531

26-
const disabledProps = !permissions.delete_firewall_device
32+
const disabledProps = !(
33+
linodePermissions?.update_linode &&
34+
firewallPermissions?.delete_firewall_device
35+
)
2736
? {
2837
disabled: true,
2938
tooltip: NO_PERMISSIONS_TOOLTIP_TEXT,

packages/manager/src/features/Linodes/LinodesDetail/LinodeNetworking/LinodeFirewalls/LinodeFirewallsRow.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export const LinodeFirewallsRow = (props: LinodeFirewallsRowProps) => {
5050
<TableCell actionCell>
5151
<LinodeFirewallsActionMenu
5252
firewallID={firewallID}
53+
linodeID={linodeID}
5354
onUnassign={() => onClickUnassign(firewallDevice, firewall)}
5455
/>
5556
</TableCell>

0 commit comments

Comments
 (0)