diff options
author | Mathieu Velten <matmaul@gmail.com> | 2023-12-04 13:31:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-04 12:31:42 +0000 |
commit | 9e7f80037d08619cdd193831540d34e9ed5aacd7 (patch) | |
tree | 6571e3ff2821fb876e3b37fe57ee15a20b0a8ca8 /synapse | |
parent | Bump matrix-org/netlify-pr-preview from 2 to 3 (#16719) (diff) | |
download | synapse-9e7f80037d08619cdd193831540d34e9ed5aacd7.tar.xz |
Server notices: add an autojoin setting for the notices room (#16699)
Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/config/server_notices.py | 2 | ||||
-rw-r--r-- | synapse/server_notices/server_notices_manager.py | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/synapse/config/server_notices.py b/synapse/config/server_notices.py index ce041abe9b..a8badba0f8 100644 --- a/synapse/config/server_notices.py +++ b/synapse/config/server_notices.py @@ -48,6 +48,7 @@ class ServerNoticesConfig(Config): self.server_notices_mxid_display_name: Optional[str] = None self.server_notices_mxid_avatar_url: Optional[str] = None self.server_notices_room_name: Optional[str] = None + self.server_notices_auto_join: bool = False def read_config(self, config: JsonDict, **kwargs: Any) -> None: c = config.get("server_notices") @@ -62,3 +63,4 @@ class ServerNoticesConfig(Config): self.server_notices_mxid_avatar_url = c.get("system_mxid_avatar_url", None) # todo: i18n self.server_notices_room_name = c.get("room_name", "Server Notices") + self.server_notices_auto_join = c.get("auto_join", False) diff --git a/synapse/server_notices/server_notices_manager.py b/synapse/server_notices/server_notices_manager.py index 44b999677a..2353b5d47f 100644 --- a/synapse/server_notices/server_notices_manager.py +++ b/synapse/server_notices/server_notices_manager.py @@ -224,14 +224,27 @@ class ServerNoticesManager: if room.room_id == room_id: return + user_id_obj = UserID.from_string(user_id) await self._room_member_handler.update_membership( requester=requester, - target=UserID.from_string(user_id), + target=user_id_obj, room_id=room_id, action="invite", ratelimit=False, ) + if self._config.servernotices.server_notices_auto_join: + user_requester = create_requester( + user_id, authenticated_entity=self._server_name + ) + await self._room_member_handler.update_membership( + requester=user_requester, + target=user_id_obj, + room_id=room_id, + action="join", + ratelimit=False, + ) + async def _update_notice_user_profile_if_changed( self, requester: Requester, |