user-wsc/User/router_user_admin.py

69 lines
2.3 KiB
Python

from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from User import crud, models, schemas
from User.default import default_root, ROOT_USER
from Utils.DataBase.SqlAlchemyUtils import engine, get_db
from Utils.AccessControl.AccessUtil import ac_admin
models.Base.metadata.create_all(bind=engine)
default_root()
router = APIRouter(
tags=["用户管理"],
prefix="/api/user/admin",
dependencies=[
Depends(ac_admin)
]
)
@router.post("/create", summary="新建用户", response_model=schemas.InfoBase)
def create_user(body: schemas.UserCreate, db: Session = Depends(get_db)):
item = crud.get_user_by_email(db, email=body.email)
if item:
raise HTTPException(status_code=400, detail="Email already registered")
crud.create_user(db=db, body=body)
return {"info": "Success"}
@router.post("/delete/{uid}", summary="删除用户")
def delete_user(uid: str, db: Session = Depends(get_db)):
crud.delete_user(db=db, uid=uid)
return {"info": "Success"}
@router.post("/edit/{uid}", summary="编辑用户")
def user_edit(uid: str, body: schemas.UserEdit, db: Session = Depends(get_db)):
data = crud.get_user_by_id(db, uid)
if not data:
raise HTTPException(status_code=400, detail="User Not found")
crud.edit_user(db=db, body=body, uid=uid)
return {"info": "Success"}
@router.post("/reset_pwd/{uid}", summary="重置用户密码")
def user_reset_pwd(uid: str, db: Session = Depends(get_db)):
data = crud.get_user_by_id(db, uid)
if not data:
raise HTTPException(status_code=400, detail="User Not found")
passwd = ROOT_USER.get("passwd")
crud.reset_user_pwd(db=db, passwd=passwd, uid=uid)
return {"info": "Success"}
@router.get("/detail/{uid}", summary="用户信息")
def detail(uid: str, db: Session = Depends(get_db)):
data = crud.get_user_by_id(db=db, uid=uid)
if data is None:
raise HTTPException(status_code=404, detail="User Not found")
return data
@router.post("/search", summary="查询用户", response_model=List[schemas.User])
def search_users(body: schemas.UserSearch, skip: int = 0, limit: int = 20, db: Session = Depends(get_db)):
users = crud.get_users(db, body=body, skip=skip, limit=limit)
return users