feat: first commit, auth
This commit is contained in:
0
services/__init__.py
Normal file
0
services/__init__.py
Normal file
18
services/sessions.py
Normal file
18
services/sessions.py
Normal file
@@ -0,0 +1,18 @@
|
||||
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
|
||||
22
services/users.py
Normal file
22
services/users.py
Normal file
@@ -0,0 +1,22 @@
|
||||
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),
|
||||
)
|
||||
Reference in New Issue
Block a user