diff options
author | Erik Johnston <erik@matrix.org> | 2016-06-30 15:40:58 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-06-30 15:40:58 +0100 |
commit | f328d95cef99763d056171846253ed68cab58214 (patch) | |
tree | 199bef20aca0ca594d234ff61c16ab44e46be91f /synapse/storage | |
parent | Merge pull request #902 from matrix-org/erikj/expire_media (diff) | |
download | synapse-f328d95cef99763d056171846253ed68cab58214.tar.xz |
Feature: Add deactivate account admin API
Allows server admins to "deactivate" accounts, which: - Revokes all access tokens - Removes all threepids - Removes password The API is a POST to `/admin/deactivate/<user_id>`
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/_base.py | 5 | ||||
-rw-r--r-- | synapse/storage/registration.py | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py index 32c6677d47..d766a30299 100644 --- a/synapse/storage/_base.py +++ b/synapse/storage/_base.py @@ -807,6 +807,11 @@ class SQLBaseStore(object): if txn.rowcount > 1: raise StoreError(500, "more than one row matched") + def _simple_delete(self, table, keyvalues, desc): + return self.runInteraction( + desc, self._simple_delete_txn, table, keyvalues + ) + @staticmethod def _simple_delete_txn(txn, table, keyvalues): sql = "DELETE FROM %s WHERE %s" % ( diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py index 3de9e0f709..5c75dbab51 100644 --- a/synapse/storage/registration.py +++ b/synapse/storage/registration.py @@ -384,6 +384,15 @@ class RegistrationStore(SQLBaseStore): defer.returnValue(ret['user_id']) defer.returnValue(None) + def user_delete_threepids(self, user_id): + return self._simple_delete( + "user_threepids", + keyvalues={ + "user_id": user_id, + }, + desc="user_delete_threepids", + ) + @defer.inlineCallbacks def count_all_users(self): """Counts all users registered on the homeserver.""" |