Initial lightweight AI agent admin
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy import or_, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.api.deps import get_current_user
|
||||
from app.core.database import get_db
|
||||
from app.core.security import create_access_token, hash_password, verify_password
|
||||
from app.models import User
|
||||
from app.schemas.core import LoginIn, TokenOut, UserCreate, UserOut, UserUpdate
|
||||
from app.schemas.common import Page
|
||||
|
||||
router = APIRouter(prefix="/auth", tags=["认证"])
|
||||
|
||||
|
||||
@router.post("/login", response_model=TokenOut)
|
||||
async def login(payload: LoginIn, db: AsyncSession = Depends(get_db)):
|
||||
result = await db.execute(
|
||||
select(User).where(
|
||||
or_(User.username == payload.username, User.email == payload.username),
|
||||
User.is_deleted == False,
|
||||
)
|
||||
)
|
||||
user = result.scalar_one_or_none()
|
||||
if not user or not verify_password(payload.password, user.password_hash):
|
||||
raise HTTPException(status_code=400, detail="用户名或密码错误")
|
||||
if user.status != "enabled":
|
||||
raise HTTPException(status_code=403, detail="用户已禁用")
|
||||
return TokenOut(access_token=create_access_token(user.id, {"username": user.username}))
|
||||
|
||||
|
||||
@router.get("/me", response_model=UserOut)
|
||||
async def me(user: User = Depends(get_current_user)):
|
||||
return user
|
||||
Reference in New Issue
Block a user