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
|
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
|
new_status = KeyStatus.EXPIRED
|
||||||
|
|
||||||
@ -58,7 +58,8 @@ async def upgrade_old_refresh_token(connection: AsyncConnection, user) -> Option
|
|||||||
.where(
|
.where(
|
||||||
account_table.c.id == user.id,
|
account_table.c.id == user.id,
|
||||||
account_keyring_table.c.status == KeyStatus.ACTIVE,
|
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)
|
.values(status=new_status)
|
||||||
)
|
)
|
||||||
|
@ -129,7 +129,7 @@ async def refresh(
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
||||||
await upgrade_old_refresh_token(connection,current_user)
|
await upgrade_old_refresh_token(connection,current_user,refresh_token)
|
||||||
|
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||||
|
Loading…
Reference in New Issue
Block a user
Он все текущие токены пометит устаревшими у аккаунта?
Тут момент - он должен экспайрить конкретный рефреш токен, т.к. один Пользователь может заходить с нескольких устройств.
Как при решении этой проблемы привязать рефреш токен к конкретной сессии?
Когда пользователь заходит(логин/пароль) я могу получить только все ключи по его ID.
Ты прав в отсутствии привязки. А я про то, что в update_query надо ставить фильтрацию по expiry как минимум, т.е. при генерации нового рефреша не губить скопом все старые как минимум.
По поводу сессионной привязки я подумаю, стоит ли её организовывать по идентификатору сессию, который по идее должен тоже быть у нас на руках.