From 95b2b820672965e1ce1f1ea38a26824f02fe0e64 Mon Sep 17 00:00:00 2001 From: Pankaj Yadav Date: Wed, 27 Jan 2021 12:09:08 +0530 Subject: [PATCH 1/3] Check_if_user_in_room --- synapse/rest/admin/rooms.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/synapse/rest/admin/rooms.py b/synapse/rest/admin/rooms.py index da1499cab3b3..f14915d47ee7 100644 --- a/synapse/rest/admin/rooms.py +++ b/synapse/rest/admin/rooms.py @@ -431,7 +431,17 @@ async def on_POST(self, request, room_identifier): if not admin_users: raise SynapseError(400, "No local admin user in room") - admin_user_id = admin_users[-1] + admin_user_id = None + + for admin_user in reversed(admin_users): + if room_state.get((EventTypes.Member, admin_user)): + admin_user_id = admin_user + break + + if not admin_user_id: + raise SynapseError( + 400, "No local admin user in room", + ) pl_content = power_levels.content else: From 8e4c4de3d269082da48f2df3d009a0d7ef05f7b8 Mon Sep 17 00:00:00 2001 From: Pankaj Yadav Date: Wed, 27 Jan 2021 12:53:17 +0530 Subject: [PATCH 2/3] Added changelog.d file --- changelog.d/9235.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/9235.bugfix diff --git a/changelog.d/9235.bugfix b/changelog.d/9235.bugfix new file mode 100644 index 000000000000..28f98403e336 --- /dev/null +++ b/changelog.d/9235.bugfix @@ -0,0 +1 @@ +The make_room_admin admin API now checks if a user is in the room before sending a PL event on their behalf. Contributed by Pankaj Yadav. \ No newline at end of file From 7a98aef74cec97ea16d7d4f65a446ed86120bfb0 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 27 Jan 2021 15:58:53 +0000 Subject: [PATCH 3/3] Update changelog.d/9235.bugfix --- changelog.d/9235.bugfix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/9235.bugfix b/changelog.d/9235.bugfix index 28f98403e336..7809c8673bb7 100644 --- a/changelog.d/9235.bugfix +++ b/changelog.d/9235.bugfix @@ -1 +1 @@ -The make_room_admin admin API now checks if a user is in the room before sending a PL event on their behalf. Contributed by Pankaj Yadav. \ No newline at end of file +Fix a bug in the `make_room_admin` admin API where it failed if the admin with the greatest power level was not in the room. Contributed by Pankaj Yadav.