Change displayname of user as admin in rooms (#6876)

This commit is contained in:
Dirk Klimpel 2020-02-21 18:44:03 +01:00 committed by GitHub
parent fcf4599488
commit 7b0e2d961c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

1
changelog.d/6572.bugfix Normal file
View File

@ -0,0 +1 @@
When a user's profile is updated via the admin API, also generate a displayname/avatar update for that user in each room.

View File

@ -28,7 +28,7 @@ from synapse.api.errors import (
SynapseError, SynapseError,
) )
from synapse.metrics.background_process_metrics import run_as_background_process from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.types import UserID, get_domain_from_id from synapse.types import UserID, create_requester, get_domain_from_id
from ._base import BaseHandler from ._base import BaseHandler
@ -165,6 +165,12 @@ class BaseProfileHandler(BaseHandler):
if new_displayname == "": if new_displayname == "":
new_displayname = None new_displayname = None
# If the admin changes the display name of a user, the requesting user cannot send
# the join event to update the displayname in the rooms.
# This must be done by the target user himself.
if by_admin:
requester = create_requester(target_user)
yield self.store.set_profile_displayname(target_user.localpart, new_displayname) yield self.store.set_profile_displayname(target_user.localpart, new_displayname)
if self.hs.config.user_directory_search_all_users: if self.hs.config.user_directory_search_all_users:
@ -217,6 +223,10 @@ class BaseProfileHandler(BaseHandler):
400, "Avatar URL is too long (max %i)" % (MAX_AVATAR_URL_LEN,) 400, "Avatar URL is too long (max %i)" % (MAX_AVATAR_URL_LEN,)
) )
# Same like set_displayname
if by_admin:
requester = create_requester(target_user)
yield self.store.set_profile_avatar_url(target_user.localpart, new_avatar_url) yield self.store.set_profile_avatar_url(target_user.localpart, new_avatar_url)
if self.hs.config.user_directory_search_all_users: if self.hs.config.user_directory_search_all_users: