19 lines
623 B
Python
19 lines
623 B
Python
from core.secrets import generate_pair, hash_refresh_token
|
|
from db.models import Session
|
|
from repositories.sessions import SessionsRepository
|
|
from schemas.dto import KeyPair
|
|
from schemas.providers import ProvidersType
|
|
|
|
|
|
async def refresh_token_rotation(
|
|
sessions_repo: SessionsRepository, old_token: Session, iss: ProvidersType
|
|
) -> KeyPair:
|
|
user = old_token.user
|
|
await sessions_repo.revoke(old_token.id)
|
|
|
|
key_pair = generate_pair(user.id, iss=iss)
|
|
refresh_token_hash = hash_refresh_token(key_pair.refresh_token)
|
|
await sessions_repo.create(user.id, refresh_token_hash, iss=iss)
|
|
|
|
return key_pair
|