summary refs log tree commit diff
path: root/synapse/storage/databases/main/registration.py
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2021-04-22 18:30:04 +0100
committerAndrew Morgan <andrew@amorgan.xyz>2021-04-22 18:30:04 +0100
commit159622bd9ab8c6101d3cc3409c410bdf15d8a902 (patch)
treea0b9a4320f4e3fedc07ba3eabc9932a283b7fb7a /synapse/storage/databases/main/registration.py
parentMerge commit 'fdf834694' into anoa/dinsic_release_1_31_0 (diff)
parentMerge branch 'develop' into jaywink/admin-forward-extremities (diff)
downloadsynapse-159622bd9ab8c6101d3cc3409c410bdf15d8a902.tar.xz
Merge commit 'cee4010f9' into anoa/dinsic_release_1_31_0
Diffstat (limited to 'synapse/storage/databases/main/registration.py')
-rw-r--r--synapse/storage/databases/main/registration.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/synapse/storage/databases/main/registration.py b/synapse/storage/databases/main/registration.py

index 7fa33902d0..9d253ef2bf 100644 --- a/synapse/storage/databases/main/registration.py +++ b/synapse/storage/databases/main/registration.py
@@ -463,6 +463,35 @@ class RegistrationWorkerStore(CacheInvalidationWorkerStore): await self.db_pool.runInteraction("set_server_admin", set_server_admin_txn) + async def set_shadow_banned(self, user: UserID, shadow_banned: bool) -> None: + """Sets whether a user shadow-banned. + + Args: + user: user ID of the user to test + shadow_banned: true iff the user is to be shadow-banned, false otherwise. + """ + + def set_shadow_banned_txn(txn): + self.db_pool.simple_update_one_txn( + txn, + table="users", + keyvalues={"name": user.to_string()}, + updatevalues={"shadow_banned": shadow_banned}, + ) + # In order for this to apply immediately, clear the cache for this user. + tokens = self.db_pool.simple_select_onecol_txn( + txn, + table="access_tokens", + keyvalues={"user_id": user.to_string()}, + retcol="token", + ) + for token in tokens: + self._invalidate_cache_and_stream( + txn, self.get_user_by_access_token, (token,) + ) + + await self.db_pool.runInteraction("set_shadow_banned", set_shadow_banned_txn) + def _query_for_auth(self, txn, token: str) -> Optional[TokenLookupResult]: sql = """ SELECT users.name as user_id,