|
|
|
@ -36,6 +36,7 @@ from synapse.api.ratelimiting import Ratelimiter |
|
|
|
|
from synapse.event_auth import get_named_level, get_power_level_event |
|
|
|
|
from synapse.events import EventBase |
|
|
|
|
from synapse.events.snapshot import EventContext |
|
|
|
|
from synapse.handlers.profile import MAX_AVATAR_URL_LEN, MAX_DISPLAYNAME_LEN |
|
|
|
|
from synapse.types import ( |
|
|
|
|
JsonDict, |
|
|
|
|
Requester, |
|
|
|
@ -79,7 +80,7 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
self.account_data_handler = hs.get_account_data_handler() |
|
|
|
|
self.event_auth_handler = hs.get_event_auth_handler() |
|
|
|
|
|
|
|
|
|
self.member_linearizer = Linearizer(name="member") |
|
|
|
|
self.member_linearizer: Linearizer = Linearizer(name="member") |
|
|
|
|
|
|
|
|
|
self.clock = hs.get_clock() |
|
|
|
|
self.spam_checker = hs.get_spam_checker() |
|
|
|
@ -556,6 +557,20 @@ class RoomMemberHandler(metaclass=abc.ABCMeta): |
|
|
|
|
content.pop("displayname", None) |
|
|
|
|
content.pop("avatar_url", None) |
|
|
|
|
|
|
|
|
|
if len(content.get("displayname") or "") > MAX_DISPLAYNAME_LEN: |
|
|
|
|
raise SynapseError( |
|
|
|
|
400, |
|
|
|
|
f"Displayname is too long (max {MAX_DISPLAYNAME_LEN})", |
|
|
|
|
errcode=Codes.BAD_JSON, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
if len(content.get("avatar_url") or "") > MAX_AVATAR_URL_LEN: |
|
|
|
|
raise SynapseError( |
|
|
|
|
400, |
|
|
|
|
f"Avatar URL is too long (max {MAX_AVATAR_URL_LEN})", |
|
|
|
|
errcode=Codes.BAD_JSON, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
effective_membership_state = action |
|
|
|
|
if action in ["kick", "unban"]: |
|
|
|
|
effective_membership_state = "leave" |
|
|
|
|