diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2019-11-28 10:40:42 +0000 |
---|---|---|
committer | Andrew Morgan <andrew@amorgan.xyz> | 2019-11-28 11:07:45 +0000 |
commit | 2030193e5523810c4fd6158f97b7a223cee4cb72 (patch) | |
tree | e5c9c44c55d1dd81882d70caf1ed90fbc52062ee | |
parent | Fix startup error when http proxy is defined. (#6421) (diff) | |
download | synapse-2030193e5523810c4fd6158f97b7a223cee4cb72.tar.xz |
Remove local threepids on account deactivation (#6426)
-rw-r--r-- | changelog.d/6426.bugfix | 1 | ||||
-rw-r--r-- | synapse/handlers/deactivate_account.py | 3 | ||||
-rw-r--r-- | synapse/storage/data_stores/main/registration.py | 13 |
3 files changed, 17 insertions, 0 deletions
diff --git a/changelog.d/6426.bugfix b/changelog.d/6426.bugfix new file mode 100644 index 0000000000..3acfde4211 --- /dev/null +++ b/changelog.d/6426.bugfix @@ -0,0 +1 @@ +Clean up local threepids from user on account deactivation. \ No newline at end of file diff --git a/synapse/handlers/deactivate_account.py b/synapse/handlers/deactivate_account.py index 63267a0a4c..6dedaaff8d 100644 --- a/synapse/handlers/deactivate_account.py +++ b/synapse/handlers/deactivate_account.py @@ -95,6 +95,9 @@ class DeactivateAccountHandler(BaseHandler): user_id, threepid["medium"], threepid["address"] ) + # Remove all 3PIDs this user has bound to the homeserver + yield self.store.user_delete_threepids(user_id) + # delete any devices belonging to the user, which will also # delete corresponding access tokens. yield self._device_handler.delete_all_devices_for_user(user_id) diff --git a/synapse/storage/data_stores/main/registration.py b/synapse/storage/data_stores/main/registration.py index ee1b2b2bbf..89147ad511 100644 --- a/synapse/storage/data_stores/main/registration.py +++ b/synapse/storage/data_stores/main/registration.py @@ -577,6 +577,19 @@ class RegistrationWorkerStore(SQLBaseStore): return self._simple_delete( "user_threepids", keyvalues={"user_id": user_id, "medium": medium, "address": address}, + desc="user_delete_threepid", + ) + + def user_delete_threepids(self, user_id: str): + """Delete all threepid this user has bound + + Args: + user_id: The user id to delete all threepids of + + """ + return self._simple_delete( + "user_threepids", + keyvalues={"user_id": user_id}, desc="user_delete_threepids", ) |