69 lines
2.3 KiB
Python
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
|