From 0677804686284d398c979b775e4fc795ccd41c14 Mon Sep 17 00:00:00 2001 From: babolivier Date: Fri, 1 Apr 2022 09:23:26 +0000 Subject: [PATCH] deploy: e4409301ba91add60d1ee1f1f0e6346228737d70 --- develop/404.html | 2 +- develop/CAPTCHA_SETUP.html | 2 +- develop/admin_api/account_validity.html | 2 +- develop/admin_api/delete_group.html | 2 +- develop/admin_api/event_reports.html | 2 +- develop/admin_api/media_admin_api.html | 2 +- develop/admin_api/purge_history_api.html | 2 +- develop/admin_api/register_api.html | 2 +- develop/admin_api/room_membership.html | 2 +- develop/admin_api/rooms.html | 2 +- develop/admin_api/server_notices.html | 2 +- develop/admin_api/statistics.html | 2 +- develop/admin_api/user_admin_api.html | 2 +- develop/admin_api/version_api.html | 2 +- develop/application_services.html | 2 +- develop/auth_chain_difference_algorithm.html | 2 +- develop/code_style.html | 2 +- develop/consent_tracking.html | 2 +- develop/delegate.html | 2 +- develop/deprecation_policy.html | 2 +- develop/development/cas.html | 2 +- develop/development/contributing_guide.html | 2 +- develop/development/database_schema.html | 2 +- develop/development/demo.html | 2 +- .../development/experimental_features.html | 2 +- develop/development/git.html | 2 +- .../internal_documentation/index.html | 2 +- develop/development/releases.html | 2 +- develop/development/room-dag-concepts.html | 2 +- develop/development/saml.html | 2 +- develop/development/url_previews.html | 2 +- develop/federate.html | 2 +- develop/index.html | 2 +- develop/jwt.html | 2 +- develop/log_contexts.html | 2 +- develop/manhole.html | 2 +- develop/media_repository.html | 2 +- develop/message_retention_policies.html | 2 +- develop/metrics-howto.html | 2 +- develop/modules/account_data_callbacks.html | 346 ++++++++++++++++++ .../modules/account_validity_callbacks.html | 2 +- ...ackground_update_controller_callbacks.html | 6 +- develop/modules/index.html | 2 +- .../password_auth_provider_callbacks.html | 2 +- develop/modules/porting_legacy_module.html | 6 +- .../modules/presence_router_callbacks.html | 2 +- develop/modules/spam_checker_callbacks.html | 2 +- .../modules/third_party_rules_callbacks.html | 2 +- develop/modules/writing_a_module.html | 4 +- develop/openid.html | 2 +- develop/opentracing.html | 2 +- ...ing_synapse_on_single_board_computers.html | 2 +- develop/password_auth_providers.html | 2 +- develop/postgres.html | 2 +- develop/print.html | 99 ++++- develop/replication.html | 2 +- develop/reverse_proxy.html | 2 +- develop/room_and_user_statistics.html | 2 +- develop/searchindex.js | 2 +- develop/searchindex.json | 2 +- develop/server_notices.html | 2 +- develop/setup/forward_proxy.html | 2 +- develop/setup/installation.html | 2 +- develop/sso_mapping_providers.html | 2 +- develop/structured_logging.html | 2 +- develop/synctl_workers.html | 2 +- develop/systemd-with-workers/index.html | 2 +- develop/tcp_replication.html | 2 +- develop/templates.html | 2 +- develop/turn-howto.html | 2 +- develop/upgrade.html | 2 +- .../admin_api/background_updates.html | 2 +- .../administration/admin_api/federation.html | 2 +- .../usage/administration/admin_api/index.html | 2 +- .../admin_api/registration_tokens.html | 2 +- develop/usage/administration/admin_faq.html | 2 +- .../database_maintenance_tools.html | 2 +- develop/usage/administration/index.html | 2 +- develop/usage/administration/request_log.html | 2 +- .../usage/administration/state_groups.html | 2 +- ...anding_synapse_through_grafana_graphs.html | 2 +- .../administration/useful_sql_for_admins.html | 2 +- .../homeserver_sample_config.html | 2 +- develop/usage/configuration/index.html | 2 +- .../configuration/logging_sample_config.html | 2 +- .../user_authentication/index.html | 2 +- .../user_authentication/refresh_tokens.html | 2 +- .../single_sign_on/cas.html | 2 +- .../single_sign_on/index.html | 2 +- .../single_sign_on/saml.html | 2 +- develop/user_directory.html | 2 +- develop/welcome_and_overview.html | 2 +- develop/workers.html | 2 +- 93 files changed, 537 insertions(+), 100 deletions(-) create mode 100644 develop/modules/account_data_callbacks.html diff --git a/develop/404.html b/develop/404.html index 60676a72be..5857c5ef84 100644 --- a/develop/404.html +++ b/develop/404.html @@ -101,7 +101,7 @@ diff --git a/develop/CAPTCHA_SETUP.html b/develop/CAPTCHA_SETUP.html index 849f374b72..fcde2426e2 100644 --- a/develop/CAPTCHA_SETUP.html +++ b/develop/CAPTCHA_SETUP.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/account_validity.html b/develop/admin_api/account_validity.html index a51b6c43b7..6a51aab953 100644 --- a/develop/admin_api/account_validity.html +++ b/develop/admin_api/account_validity.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/delete_group.html b/develop/admin_api/delete_group.html index 8ffb218061..0b70f61f69 100644 --- a/develop/admin_api/delete_group.html +++ b/develop/admin_api/delete_group.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/event_reports.html b/develop/admin_api/event_reports.html index 0f67285217..c69b0b4436 100644 --- a/develop/admin_api/event_reports.html +++ b/develop/admin_api/event_reports.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/media_admin_api.html b/develop/admin_api/media_admin_api.html index 928c29e1bb..2be4460486 100644 --- a/develop/admin_api/media_admin_api.html +++ b/develop/admin_api/media_admin_api.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/purge_history_api.html b/develop/admin_api/purge_history_api.html index 6c707fab3b..6995f009c6 100644 --- a/develop/admin_api/purge_history_api.html +++ b/develop/admin_api/purge_history_api.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/register_api.html b/develop/admin_api/register_api.html index 3172e0b432..c95769ab32 100644 --- a/develop/admin_api/register_api.html +++ b/develop/admin_api/register_api.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/room_membership.html b/develop/admin_api/room_membership.html index a1ff6d831d..1f232c4f3d 100644 --- a/develop/admin_api/room_membership.html +++ b/develop/admin_api/room_membership.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/rooms.html b/develop/admin_api/rooms.html index 9e2bf53daf..0b8e16ad36 100644 --- a/develop/admin_api/rooms.html +++ b/develop/admin_api/rooms.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/server_notices.html b/develop/admin_api/server_notices.html index f28ed91895..5217e0bd02 100644 --- a/develop/admin_api/server_notices.html +++ b/develop/admin_api/server_notices.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/statistics.html b/develop/admin_api/statistics.html index 5b7dd111a6..7358003628 100644 --- a/develop/admin_api/statistics.html +++ b/develop/admin_api/statistics.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/user_admin_api.html b/develop/admin_api/user_admin_api.html index 1f0a861437..65598371a2 100644 --- a/develop/admin_api/user_admin_api.html +++ b/develop/admin_api/user_admin_api.html @@ -99,7 +99,7 @@ diff --git a/develop/admin_api/version_api.html b/develop/admin_api/version_api.html index 19dbbd0893..28c9e05673 100644 --- a/develop/admin_api/version_api.html +++ b/develop/admin_api/version_api.html @@ -99,7 +99,7 @@ diff --git a/develop/application_services.html b/develop/application_services.html index 3608ef1594..ba8f1debfb 100644 --- a/develop/application_services.html +++ b/develop/application_services.html @@ -99,7 +99,7 @@ diff --git a/develop/auth_chain_difference_algorithm.html b/develop/auth_chain_difference_algorithm.html index 3fa4c084f2..d9c136a2e3 100644 --- a/develop/auth_chain_difference_algorithm.html +++ b/develop/auth_chain_difference_algorithm.html @@ -99,7 +99,7 @@ diff --git a/develop/code_style.html b/develop/code_style.html index 3edd05e0e8..2dfebc9613 100644 --- a/develop/code_style.html +++ b/develop/code_style.html @@ -99,7 +99,7 @@ diff --git a/develop/consent_tracking.html b/develop/consent_tracking.html index ebf03a4d78..7bdc8facb2 100644 --- a/develop/consent_tracking.html +++ b/develop/consent_tracking.html @@ -99,7 +99,7 @@ diff --git a/develop/delegate.html b/develop/delegate.html index 2147edf2ee..fab93c8cce 100644 --- a/develop/delegate.html +++ b/develop/delegate.html @@ -99,7 +99,7 @@ diff --git a/develop/deprecation_policy.html b/develop/deprecation_policy.html index c2f92b2f46..34aba4fe70 100644 --- a/develop/deprecation_policy.html +++ b/develop/deprecation_policy.html @@ -99,7 +99,7 @@ diff --git a/develop/development/cas.html b/develop/development/cas.html index b7c71304a3..6a76126fd1 100644 --- a/develop/development/cas.html +++ b/develop/development/cas.html @@ -99,7 +99,7 @@ diff --git a/develop/development/contributing_guide.html b/develop/development/contributing_guide.html index ef7ef965e1..033473174e 100644 --- a/develop/development/contributing_guide.html +++ b/develop/development/contributing_guide.html @@ -99,7 +99,7 @@ diff --git a/develop/development/database_schema.html b/develop/development/database_schema.html index 01e6dbe529..8552689d81 100644 --- a/develop/development/database_schema.html +++ b/develop/development/database_schema.html @@ -99,7 +99,7 @@ diff --git a/develop/development/demo.html b/develop/development/demo.html index 7345070101..12a2aa9a0d 100644 --- a/develop/development/demo.html +++ b/develop/development/demo.html @@ -99,7 +99,7 @@ diff --git a/develop/development/experimental_features.html b/develop/development/experimental_features.html index 402e552d32..66dff7d984 100644 --- a/develop/development/experimental_features.html +++ b/develop/development/experimental_features.html @@ -99,7 +99,7 @@ diff --git a/develop/development/git.html b/develop/development/git.html index e31c03e678..d5a221bf25 100644 --- a/develop/development/git.html +++ b/develop/development/git.html @@ -99,7 +99,7 @@ diff --git a/develop/development/internal_documentation/index.html b/develop/development/internal_documentation/index.html index 996acd6d62..9aad65f732 100644 --- a/develop/development/internal_documentation/index.html +++ b/develop/development/internal_documentation/index.html @@ -99,7 +99,7 @@ diff --git a/develop/development/releases.html b/develop/development/releases.html index 86041a1005..556ba89473 100644 --- a/develop/development/releases.html +++ b/develop/development/releases.html @@ -99,7 +99,7 @@ diff --git a/develop/development/room-dag-concepts.html b/develop/development/room-dag-concepts.html index 183a250718..be174cc053 100644 --- a/develop/development/room-dag-concepts.html +++ b/develop/development/room-dag-concepts.html @@ -99,7 +99,7 @@ diff --git a/develop/development/saml.html b/develop/development/saml.html index 218c3b550a..5a68dc3d5b 100644 --- a/develop/development/saml.html +++ b/develop/development/saml.html @@ -99,7 +99,7 @@ diff --git a/develop/development/url_previews.html b/develop/development/url_previews.html index 85a72ebc72..beea80f200 100644 --- a/develop/development/url_previews.html +++ b/develop/development/url_previews.html @@ -99,7 +99,7 @@ diff --git a/develop/federate.html b/develop/federate.html index f5efd3f0ab..d63f698605 100644 --- a/develop/federate.html +++ b/develop/federate.html @@ -99,7 +99,7 @@ diff --git a/develop/index.html b/develop/index.html index aacdf3e504..46251ff955 100644 --- a/develop/index.html +++ b/develop/index.html @@ -99,7 +99,7 @@ diff --git a/develop/jwt.html b/develop/jwt.html index 9291bd821b..87467523cd 100644 --- a/develop/jwt.html +++ b/develop/jwt.html @@ -99,7 +99,7 @@ diff --git a/develop/log_contexts.html b/develop/log_contexts.html index 5b622cfc7e..5da32757e8 100644 --- a/develop/log_contexts.html +++ b/develop/log_contexts.html @@ -99,7 +99,7 @@ diff --git a/develop/manhole.html b/develop/manhole.html index d318a6bb87..847f8246b7 100644 --- a/develop/manhole.html +++ b/develop/manhole.html @@ -99,7 +99,7 @@ diff --git a/develop/media_repository.html b/develop/media_repository.html index a8913c0855..c59839883d 100644 --- a/develop/media_repository.html +++ b/develop/media_repository.html @@ -99,7 +99,7 @@ diff --git a/develop/message_retention_policies.html b/develop/message_retention_policies.html index bf4dec4df5..87e7d3494e 100644 --- a/develop/message_retention_policies.html +++ b/develop/message_retention_policies.html @@ -99,7 +99,7 @@ diff --git a/develop/metrics-howto.html b/develop/metrics-howto.html index 4590ea42aa..d5272898b9 100644 --- a/develop/metrics-howto.html +++ b/develop/metrics-howto.html @@ -99,7 +99,7 @@ diff --git a/develop/modules/account_data_callbacks.html b/develop/modules/account_data_callbacks.html new file mode 100644 index 0000000000..d10b98a6cb --- /dev/null +++ b/develop/modules/account_data_callbacks.html @@ -0,0 +1,346 @@ + + + + + + Account data callbacks - Synapse + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + +
+
+ +
+ +
+ +

Account data callbacks

+

Account data callbacks allow module developers to react to changes of the account data +of local users. Account data callbacks can be registered using the module API's +register_account_data_callbacks method.

+

Callbacks

+

The available account data callbacks are:

+

on_account_data_updated

+

First introduced in Synapse v1.57.0

+
async def on_account_data_updated(
+    user_id: str,
+    room_id: Optional[str],
+    account_data_type: str,
+    content: "synapse.module_api.JsonDict",
+) -> None:
+
+

Called after user's account data has been updated. The module is given the +Matrix ID of the user whose account data is changing, the room ID the data is associated +with, the type associated with the change, as well as the new content. If the account +data is not associated with a specific room, then the room ID is None.

+

This callback is triggered when new account data is added or when the data associated with +a given type (and optionally room) changes. This includes deletion, since in Matrix, +deleting account data consists of replacing the data associated with a given type +(and optionally room) with an empty dictionary ({}).

+

Note that this doesn't trigger when changing the tags associated with a room, as these are +processed separately by Synapse.

+

If multiple modules implement this callback, Synapse runs them all in order.

+

Example

+

The example below is a module that implements the on_account_data_updated callback, and +sends an event to an audit room when a user changes their account data.

+
import json
+import attr
+from typing import Any, Dict, Optional
+
+from synapse.module_api import JsonDict, ModuleApi
+from synapse.module_api.errors import ConfigError
+
+
+@attr.s(auto_attribs=True)
+class CustomAccountDataConfig:
+    audit_room: str
+    sender: str
+
+
+class CustomAccountDataModule:
+    def __init__(self, config: CustomAccountDataConfig, api: ModuleApi):
+        self.api = api
+        self.config = config
+
+        self.api.register_account_data_callbacks(
+            on_account_data_updated=self.log_new_account_data,
+        )
+
+    @staticmethod
+    def parse_config(config: Dict[str, Any]) -> CustomAccountDataConfig:
+        def check_in_config(param: str):
+            if param not in config:
+                raise ConfigError(f"'{param}' is required")
+
+        check_in_config("audit_room")
+        check_in_config("sender")
+
+        return CustomAccountDataConfig(
+            audit_room=config["audit_room"],
+            sender=config["sender"],
+        )
+
+    async def log_new_account_data(
+        self,
+        user_id: str,
+        room_id: Optional[str],
+        account_data_type: str,
+        content: JsonDict,
+    ) -> None:
+        content_raw = json.dumps(content)
+        msg_content = f"{user_id} has changed their account data for type {account_data_type} to: {content_raw}"
+
+        if room_id is not None:
+            msg_content += f" (in room {room_id})"
+
+        await self.api.create_and_send_event_into_room(
+            {
+                "room_id": self.config.audit_room,
+                "sender": self.config.sender,
+                "type": "m.room.message",
+                "content": {
+                    "msgtype": "m.text",
+                    "body": msg_content
+                }
+            }
+        )
+
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/develop/modules/account_validity_callbacks.html b/develop/modules/account_validity_callbacks.html index dcfe9142d3..aa07def052 100644 --- a/develop/modules/account_validity_callbacks.html +++ b/develop/modules/account_validity_callbacks.html @@ -99,7 +99,7 @@ diff --git a/develop/modules/background_update_controller_callbacks.html b/develop/modules/background_update_controller_callbacks.html index 285478947a..cb11384bcd 100644 --- a/develop/modules/background_update_controller_callbacks.html +++ b/develop/modules/background_update_controller_callbacks.html @@ -99,7 +99,7 @@ @@ -241,7 +241,7 @@ ensure that progress is always made.

- @@ -259,7 +259,7 @@ ensure that progress is always made.

- diff --git a/develop/modules/index.html b/develop/modules/index.html index be3ce71bd9..94c20c63e8 100644 --- a/develop/modules/index.html +++ b/develop/modules/index.html @@ -99,7 +99,7 @@ diff --git a/develop/modules/password_auth_provider_callbacks.html b/develop/modules/password_auth_provider_callbacks.html index 21e8c4c587..de63a7d018 100644 --- a/develop/modules/password_auth_provider_callbacks.html +++ b/develop/modules/password_auth_provider_callbacks.html @@ -99,7 +99,7 @@ diff --git a/develop/modules/porting_legacy_module.html b/develop/modules/porting_legacy_module.html index 72c5b52a8f..a4d0e1bc84 100644 --- a/develop/modules/porting_legacy_module.html +++ b/develop/modules/porting_legacy_module.html @@ -99,7 +99,7 @@ @@ -205,7 +205,7 @@ for more info).