Files
2026-06-15 14:50:15 +08:00

37 lines
1.2 KiB
Python

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
}