首次提交by MimoCode
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user