Skip to content

Commit edb2045

Browse files
committed
allow admins to delete gateways, not requiring owner to be same
1 parent 25a8e4f commit edb2045

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

bridger/cogs/mqtt.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ async def request_account(self, ctx: Interaction, node_id: str):
114114
@app_commands.checks.has_role(BRIDGER_ADMIN_ROLE)
115115
@app_commands.command(name="delete-account", description="Delete MQTT account")
116116
async def delete_account(self, ctx: Interaction, node_id: str):
117-
if self.gateway_manager.delete_gateway_user(node_id, ctx.user):
117+
if self.gateway_manager.delete_gateway_user(node_id):
118118
await ctx.response.send_message(f"Gateway deleted: {node_id}", ephemeral=True, delete_after=self.delete_after)
119119
else:
120120
await ctx.response.send_message(f"Gateway not found: {node_id}", ephemeral=True, delete_after=self.delete_after)

bridger/gateway.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,11 @@ def create_gateway_user(self, gateway_id: str, discord_user: Union[User, Member]
121121
raise GatewayError(f"Gateway already exists: {e}", gateway)
122122
return gateway, password
123123

124-
def delete_gateway_user(self, gateway_id: str, discord_user: Union[User, Member]) -> bool:
125-
gateway_id, gateway_id_without_bang, node_id = self.prepare_gateway_id(gateway_id)
126-
user = f"{discord_user.id}-{gateway_id_without_bang}"
127-
124+
def delete_gateway_user(self, gateway_id: str) -> bool:
128125
try:
129-
self.emqx.delete_user(self.authentication_id, user)
130-
self.emqx.delete_user_authorization_rules_built_in_database(user)
126+
gateway = self.get_gateway(gateway_id)
127+
self.emqx.delete_user(self.authentication_id, gateway.user_string)
128+
self.emqx.delete_user_authorization_rules_built_in_database(gateway.user_string)
131129
except Exception:
132130
return False
133131

tests/test_gateway.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_delete_gateway_user(gateway_manager, emqx_mock):
9595
emqx_mock.delete_user.return_value = None
9696
emqx_mock.delete_user_authorization_rules_built_in_database.return_value = None
9797

98-
success = gateway_manager.delete_gateway_user("1a2b3c4d", mock_discord_user)
98+
success = gateway_manager.delete_gateway_user("1a2b3c4d")
9999

100100
assert success is True
101101
emqx_mock.delete_user.assert_called_once_with(gateway_manager.authentication_id, "1234567890-1a2b3c4d")
@@ -106,7 +106,7 @@ def test_delete_gateway_user(gateway_manager, emqx_mock):
106106
def test_delete_gateway_user_fail(gateway_manager, emqx_mock):
107107
emqx_mock.delete_user.side_effect = Exception("Deletion failed")
108108

109-
success = gateway_manager.delete_gateway_user("1a2b3c4d", mock_discord_user)
109+
success = gateway_manager.delete_gateway_user("1a2b3c4d")
110110

111111
assert success is False
112112
emqx_mock.delete_user.assert_called_once()

0 commit comments

Comments
 (0)