mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-07 20:54:56 -04:00
Add support for MSC2697: Dehydrated devices (#8380)
This allows a user to store an offline device on the server and then restore it at a subsequent login.
This commit is contained in:
parent
43c622885c
commit
4cb44a1585
9 changed files with 454 additions and 21 deletions
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright 2014-2016 OpenMarket Ltd
|
||||
# Copyright 2017-2018 New Vector Ltd
|
||||
# Copyright 2019 The Matrix.org Foundation C.I.C.
|
||||
# Copyright 2019,2020 The Matrix.org Foundation C.I.C.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
@ -964,6 +964,36 @@ class RegistrationStore(RegistrationBackgroundUpdateStore):
|
|||
desc="add_access_token_to_user",
|
||||
)
|
||||
|
||||
def _set_device_for_access_token_txn(self, txn, token: str, device_id: str) -> str:
|
||||
old_device_id = self.db_pool.simple_select_one_onecol_txn(
|
||||
txn, "access_tokens", {"token": token}, "device_id"
|
||||
)
|
||||
|
||||
self.db_pool.simple_update_txn(
|
||||
txn, "access_tokens", {"token": token}, {"device_id": device_id}
|
||||
)
|
||||
|
||||
self._invalidate_cache_and_stream(txn, self.get_user_by_access_token, (token,))
|
||||
|
||||
return old_device_id
|
||||
|
||||
async def set_device_for_access_token(self, token: str, device_id: str) -> str:
|
||||
"""Sets the device ID associated with an access token.
|
||||
|
||||
Args:
|
||||
token: The access token to modify.
|
||||
device_id: The new device ID.
|
||||
Returns:
|
||||
The old device ID associated with the access token.
|
||||
"""
|
||||
|
||||
return await self.db_pool.runInteraction(
|
||||
"set_device_for_access_token",
|
||||
self._set_device_for_access_token_txn,
|
||||
token,
|
||||
device_id,
|
||||
)
|
||||
|
||||
async def register_user(
|
||||
self,
|
||||
user_id: str,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue