feat: added endpoints: auth, pofile, account, keyring #5
@ -49,7 +49,7 @@ async def get_user(connection: AsyncConnection, login: str) -> Optional[User]:
|
||||
return user, password
|
||||
|
||||
|
||||
async def upgrade_old_refresh_token(connection: AsyncConnection, user) -> Optional[User]:
|
||||
async def upgrade_old_refresh_token(connection: AsyncConnection, user,refresh_token) -> Optional[User]:
|
||||
ivan.dev marked this conversation as resolved
Outdated
|
||||
|
||||
new_status = KeyStatus.EXPIRED
|
||||
|
||||
@ -58,7 +58,8 @@ async def upgrade_old_refresh_token(connection: AsyncConnection, user) -> Option
|
||||
.where(
|
||||
account_table.c.id == user.id,
|
||||
account_keyring_table.c.status == KeyStatus.ACTIVE,
|
||||
account_keyring_table.c.key_type == KeyType.REFRESH_TOKEN
|
||||
account_keyring_table.c.key_type == KeyType.REFRESH_TOKEN,
|
||||
account_keyring_table.c.key_value == refresh_token
|
||||
)
|
||||
.values(status=new_status)
|
||||
)
|
||||
|
@ -129,7 +129,7 @@ async def refresh(
|
||||
|
||||
except Exception as e:
|
||||
|
||||
await upgrade_old_refresh_token(connection,current_user)
|
||||
await upgrade_old_refresh_token(connection,current_user,refresh_token)
|
||||
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
|
Loading…
Reference in New Issue
Block a user
Он все текущие токены пометит устаревшими у аккаунта?
Тут момент - он должен экспайрить конкретный рефреш токен, т.к. один Пользователь может заходить с нескольких устройств.
Как при решении этой проблемы привязать рефреш токен к конкретной сессии?
Когда пользователь заходит(логин/пароль) я могу получить только все ключи по его ID.
Ты прав в отсутствии привязки. А я про то, что в update_query надо ставить фильтрацию по expiry как минимум, т.е. при генерации нового рефреша не губить скопом все старые как минимум.
По поводу сессионной привязки я подумаю, стоит ли её организовывать по идентификатору сессию, который по идее должен тоже быть у нас на руках.