Check if a user is in the room before sending a PowerLevel event on their behalf (#9235)
parent
300d0d756a
commit
2e537a0280
|
@ -0,0 +1 @@
|
|||
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.
|
|
@ -431,7 +431,17 @@ class MakeRoomAdminRestServlet(RestServlet):
|
|||
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:
|
||||
|
|
Loading…
Reference in New Issue