diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2020-08-26 08:49:01 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-26 08:49:01 -0400 |
commit | 2e6c90ff847b2d79ae372933e431d3a7ebaf5381 (patch) | |
tree | a45218c41a5df1f60f86b57eb99d3d6ef6d210bf /synapse/handlers/profile.py | |
parent | Make SlavedIdTracker.advance have same interface as MultiWriterIDGenerator (#... (diff) | |
download | synapse-2e6c90ff847b2d79ae372933e431d3a7ebaf5381.tar.xz |
Do not propagate profile changes of shadow-banned users into rooms. (#8157)
Diffstat (limited to 'synapse/handlers/profile.py')
-rw-r--r-- | synapse/handlers/profile.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/synapse/handlers/profile.py b/synapse/handlers/profile.py index 31a2e5ea18..96c9d6bab4 100644 --- a/synapse/handlers/profile.py +++ b/synapse/handlers/profile.py @@ -14,6 +14,7 @@ # limitations under the License. import logging +import random from synapse.api.errors import ( AuthError, @@ -213,8 +214,14 @@ class BaseProfileHandler(BaseHandler): async def set_avatar_url( self, target_user, requester, new_avatar_url, by_admin=False ): - """target_user is the user whose avatar_url is to be changed; - auth_user is the user attempting to make this change.""" + """Set a new avatar URL for a user. + + Args: + target_user (UserID): the user whose avatar URL is to be changed. + requester (Requester): The user attempting to make this change. + new_avatar_url (str): The avatar URL to give this user. + by_admin (bool): Whether this change was made by an administrator. + """ if not self.hs.is_mine(target_user): raise SynapseError(400, "User is not hosted on this homeserver") @@ -278,6 +285,12 @@ class BaseProfileHandler(BaseHandler): await self.ratelimit(requester) + # Do not actually update the room state for shadow-banned users. + if requester.shadow_banned: + # We randomly sleep a bit just to annoy the requester. + await self.clock.sleep(random.randint(1, 10)) + return + room_ids = await self.store.get_rooms_for_user(target_user.to_string()) for room_id in room_ids: |