diff options
author | David Baker <dave@matrix.org> | 2018-05-24 11:08:05 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2018-05-24 11:08:05 +0100 |
commit | b3bff53178dc8dd9050b84bc953c55835e8410d1 (patch) | |
tree | 0c00244bd7c46186144e21cdc952c89509a428c6 /synapse | |
parent | Hit the 3pid unbind endpoint on deactivation (diff) | |
download | synapse-b3bff53178dc8dd9050b84bc953c55835e8410d1.tar.xz |
Unbind 3pids when they're deleted too
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/handlers/auth.py | 8 | ||||
-rw-r--r-- | synapse/rest/client/v2_alpha/account.py | 13 |
2 files changed, 18 insertions, 3 deletions
diff --git a/synapse/handlers/auth.py b/synapse/handlers/auth.py index a5365c4fe4..c3f20417c7 100644 --- a/synapse/handlers/auth.py +++ b/synapse/handlers/auth.py @@ -825,6 +825,14 @@ class AuthHandler(BaseHandler): if medium == 'email': address = address.lower() + identity_handler = self.hs.get_handlers().identity_handler + identity_handler.unbind_threepid(user_id, + { + 'medium': medium, + 'address': address, + }, + ) + ret = yield self.store.user_delete_threepid( user_id, medium, address, ) diff --git a/synapse/rest/client/v2_alpha/account.py b/synapse/rest/client/v2_alpha/account.py index 30523995af..4310e78733 100644 --- a/synapse/rest/client/v2_alpha/account.py +++ b/synapse/rest/client/v2_alpha/account.py @@ -381,9 +381,16 @@ class ThreepidDeleteRestServlet(RestServlet): requester = yield self.auth.get_user_by_req(request) user_id = requester.user.to_string() - yield self.auth_handler.delete_threepid( - user_id, body['medium'], body['address'] - ) + try: + yield self.auth_handler.delete_threepid( + user_id, body['medium'], body['address'] + ) + except Exception as e: + # NB. This endpoint should succeed if there is nothing to + # delete, so it should only throw if something is wrong + # that we ought to care about. + logger.exception("Failed to remove threepid") + raise SynapseError(500, "Failed to remove threepid") defer.returnValue((200, {})) |