mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-09-18 11:14:40 -04:00
Allow re-using a UI auth validation for a period of time (#8970)
This commit is contained in:
parent
4136255d3c
commit
5d4c330ed9
10 changed files with 193 additions and 49 deletions
|
@ -943,6 +943,42 @@ class RegistrationWorkerStore(CacheInvalidationWorkerStore):
|
|||
desc="del_user_pending_deactivation",
|
||||
)
|
||||
|
||||
async def get_access_token_last_validated(self, token_id: int) -> int:
|
||||
"""Retrieves the time (in milliseconds) of the last validation of an access token.
|
||||
|
||||
Args:
|
||||
token_id: The ID of the access token to update.
|
||||
Raises:
|
||||
StoreError if the access token was not found.
|
||||
|
||||
Returns:
|
||||
The last validation time.
|
||||
"""
|
||||
result = await self.db_pool.simple_select_one_onecol(
|
||||
"access_tokens", {"id": token_id}, "last_validated"
|
||||
)
|
||||
|
||||
# If this token has not been validated (since starting to track this),
|
||||
# return 0 instead of None.
|
||||
return result or 0
|
||||
|
||||
async def update_access_token_last_validated(self, token_id: int) -> None:
|
||||
"""Updates the last time an access token was validated.
|
||||
|
||||
Args:
|
||||
token_id: The ID of the access token to update.
|
||||
Raises:
|
||||
StoreError if there was a problem updating this.
|
||||
"""
|
||||
now = self._clock.time_msec()
|
||||
|
||||
await self.db_pool.simple_update_one(
|
||||
"access_tokens",
|
||||
{"id": token_id},
|
||||
{"last_validated": now},
|
||||
desc="update_access_token_last_validated",
|
||||
)
|
||||
|
||||
|
||||
class RegistrationBackgroundUpdateStore(RegistrationWorkerStore):
|
||||
def __init__(self, database: DatabasePool, db_conn: Connection, hs: "HomeServer"):
|
||||
|
@ -1150,6 +1186,7 @@ class RegistrationStore(StatsStore, RegistrationBackgroundUpdateStore):
|
|||
The token ID
|
||||
"""
|
||||
next_id = self._access_tokens_id_gen.get_next()
|
||||
now = self._clock.time_msec()
|
||||
|
||||
await self.db_pool.simple_insert(
|
||||
"access_tokens",
|
||||
|
@ -1160,6 +1197,7 @@ class RegistrationStore(StatsStore, RegistrationBackgroundUpdateStore):
|
|||
"device_id": device_id,
|
||||
"valid_until_ms": valid_until_ms,
|
||||
"puppets_user_id": puppets_user_id,
|
||||
"last_validated": now,
|
||||
},
|
||||
desc="add_access_token_to_user",
|
||||
)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
/* Copyright 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
-- The last time this access token was "validated" (i.e. logged in or succeeded
|
||||
-- at user-interactive authentication).
|
||||
ALTER TABLE access_tokens ADD COLUMN last_validated BIGINT;
|
Loading…
Add table
Add a link
Reference in a new issue