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