from typing import Optional from sqlalchemy.ext.asyncio import AsyncSession from app.models.user import User from app.services.user import UserService from app.core.security import create_access_token class AuthService: def __init__(self, db: AsyncSession): self.db = db self.user_service = UserService(db) async def login(self, username: str, password: str) -> Optional[dict]: user = await self.user_service.authenticate(username, password) if not user: return None access_token = create_access_token(data={"sub": str(user.id)}) return { "access_token": access_token, "token_type": "bearer", "user": user } async def register(self, data: dict) -> Optional[dict]: existing_user = await self.user_service.get_user_by_username(data["username"]) if existing_user: return None user = await self.user_service.create_user(data) access_token = create_access_token(data={"sub": str(user.id)}) return { "access_token": access_token, "token_type": "bearer", "user": user }