From ed2c20ff42533ced5269135882453f0224f4914e Mon Sep 17 00:00:00 2001 From: Mathieu Velten Date: Mon, 23 Nov 2020 17:12:20 +0100 Subject: [PATCH 1/3] Allow per-room profile to be used for server notice user This applies even if the feature is disabled at the server level. The server notice not being a real user it doesn't have an user profile. Signed-off-by: Mathieu Velten --- changelog.d/8799.bugfix | 1 + synapse/handlers/room_member.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 changelog.d/8799.bugfix diff --git a/changelog.d/8799.bugfix b/changelog.d/8799.bugfix new file mode 100644 index 000000000000..1965c6c1a01f --- /dev/null +++ b/changelog.d/8799.bugfix @@ -0,0 +1 @@ +Allow per-room profile to be used for server notice user. diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index 70f896626753..e02763a51851 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -347,7 +347,17 @@ async def update_membership_locked( # later on. content = dict(content) - if not self.allow_per_room_profiles or requester.shadow_banned: + is_requester_server_notice_user = False + if ( + self._server_notices_mxid is not None + and requester.user.to_string() == self._server_notices_mxid + ): + # allow the server notices mxid to set room-level profile + is_requester_server_notice_user = True + + if ( + not self.allow_per_room_profiles and not is_requester_server_notice_user + ) or requester.shadow_banned: # Strip profile data, knowing that new profile data will be added to the # event's content in event_creation_handler.create_event() using the target's # global profile. From e8f3da2d20e616402f2e4d7f6b01ae02979dd041 Mon Sep 17 00:00:00 2001 From: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> Date: Mon, 23 Nov 2020 16:58:55 +0000 Subject: [PATCH 2/3] minor wording change --- changelog.d/8799.bugfix | 2 +- synapse/handlers/room_member.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/changelog.d/8799.bugfix b/changelog.d/8799.bugfix index 1965c6c1a01f..a7e6b3556dd9 100644 --- a/changelog.d/8799.bugfix +++ b/changelog.d/8799.bugfix @@ -1 +1 @@ -Allow per-room profile to be used for server notice user. +Allow per-room profiles to be used for the server notice user. diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index e02763a51851..b6796aed4a0c 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -347,16 +347,16 @@ async def update_membership_locked( # later on. content = dict(content) - is_requester_server_notice_user = False + is_requester_server_notices_user = False if ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid ): # allow the server notices mxid to set room-level profile - is_requester_server_notice_user = True + is_requester_server_notices_user = True if ( - not self.allow_per_room_profiles and not is_requester_server_notice_user + not self.allow_per_room_profiles and not is_requester_server_notices_user ) or requester.shadow_banned: # Strip profile data, knowing that new profile data will be added to the # event's content in event_creation_handler.create_event() using the target's From d04ccd4d7026f753d33d41783bc771a03a468ee7 Mon Sep 17 00:00:00 2001 From: Mathieu Velten Date: Tue, 24 Nov 2020 13:08:45 +0100 Subject: [PATCH 3/3] Update synapse/handlers/room_member.py Co-authored-by: Patrick Cloke --- synapse/handlers/room_member.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index b6796aed4a0c..6debaaba9060 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -347,13 +347,11 @@ async def update_membership_locked( # later on. content = dict(content) - is_requester_server_notices_user = False - if ( + # allow the server notices mxid to set room-level profile + is_requester_server_notices_user = ( self._server_notices_mxid is not None and requester.user.to_string() == self._server_notices_mxid - ): - # allow the server notices mxid to set room-level profile - is_requester_server_notices_user = True + ) if ( not self.allow_per_room_profiles and not is_requester_server_notices_user