Pass through user-supplied content in /join/$room_id

It was always intended to allow custom keys on the join event, but this has
at some point been lost. Restore it.

If the user specifies keys like "avatar_url" then they will be clobbered.
This commit is contained in:
Kegan Dougal 2016-08-23 16:32:04 +01:00
parent 122c7a43c9
commit 4b31426a02
2 changed files with 13 additions and 2 deletions

View File

@ -59,10 +59,13 @@ class RoomMemberHandler(BaseHandler):
prev_event_ids, prev_event_ids,
txn_id=None, txn_id=None,
ratelimit=True, ratelimit=True,
content=None,
): ):
if content is None:
content = {}
msg_handler = self.hs.get_handlers().message_handler msg_handler = self.hs.get_handlers().message_handler
content = {"membership": membership} content["membership"] = membership
if requester.is_guest: if requester.is_guest:
content["kind"] = "guest" content["kind"] = "guest"
@ -140,6 +143,7 @@ class RoomMemberHandler(BaseHandler):
remote_room_hosts=None, remote_room_hosts=None,
third_party_signed=None, third_party_signed=None,
ratelimit=True, ratelimit=True,
content=None,
): ):
key = (room_id,) key = (room_id,)
@ -153,6 +157,7 @@ class RoomMemberHandler(BaseHandler):
remote_room_hosts=remote_room_hosts, remote_room_hosts=remote_room_hosts,
third_party_signed=third_party_signed, third_party_signed=third_party_signed,
ratelimit=ratelimit, ratelimit=ratelimit,
content=content,
) )
defer.returnValue(result) defer.returnValue(result)
@ -168,7 +173,11 @@ class RoomMemberHandler(BaseHandler):
remote_room_hosts=None, remote_room_hosts=None,
third_party_signed=None, third_party_signed=None,
ratelimit=True, ratelimit=True,
content=None,
): ):
if content is None:
content = {}
effective_membership_state = action effective_membership_state = action
if action in ["kick", "unban"]: if action in ["kick", "unban"]:
effective_membership_state = "leave" effective_membership_state = "leave"
@ -218,7 +227,7 @@ class RoomMemberHandler(BaseHandler):
if inviter and not self.hs.is_mine(inviter): if inviter and not self.hs.is_mine(inviter):
remote_room_hosts.append(inviter.domain) remote_room_hosts.append(inviter.domain)
content = {"membership": Membership.JOIN} content["membership"] = Membership.JOIN
profile = self.hs.get_handlers().profile_handler profile = self.hs.get_handlers().profile_handler
content["displayname"] = yield profile.get_displayname(target) content["displayname"] = yield profile.get_displayname(target)
@ -272,6 +281,7 @@ class RoomMemberHandler(BaseHandler):
txn_id=txn_id, txn_id=txn_id,
ratelimit=ratelimit, ratelimit=ratelimit,
prev_event_ids=latest_event_ids, prev_event_ids=latest_event_ids,
content=content,
) )
@defer.inlineCallbacks @defer.inlineCallbacks

View File

@ -268,6 +268,7 @@ class JoinRoomAliasServlet(ClientV1RestServlet):
action="join", action="join",
txn_id=txn_id, txn_id=txn_id,
remote_room_hosts=remote_room_hosts, remote_room_hosts=remote_room_hosts,
content=content,
third_party_signed=content.get("third_party_signed", None), third_party_signed=content.get("third_party_signed", None),
) )