23 lines
778 B
Python
23 lines
778 B
Python
from core.secrets import generate_pair, hash_refresh_token
|
|
from db.models.users import User
|
|
from repositories.sessions import SessionsRepository
|
|
from schemas.login import UserLogin
|
|
from schemas.providers import ProvidersType
|
|
from schemas.user import UserInfo
|
|
|
|
|
|
async def authorize_user(
|
|
sessions_repo: SessionsRepository, user: User, iss: ProvidersType
|
|
) -> UserLogin:
|
|
key_pair = generate_pair(user.id, iss)
|
|
|
|
refresh_token_hash = hash_refresh_token(key_pair.refresh_token)
|
|
|
|
await sessions_repo.create(user_id=user.id, refresh_token_hash=refresh_token_hash, iss=iss)
|
|
|
|
return UserLogin(
|
|
access_token=key_pair.access_token,
|
|
refresh_token=key_pair.refresh_token,
|
|
user=UserInfo(username=user.username, telegram_id=user.telegram_id),
|
|
)
|