user-wsc/User/router_user_admin.py

75 lines
2.3 KiB
Python
Raw Normal View History

2022-10-20 16:29:54 +08:00
from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from User import crud, models, schemas
from User.database import SessionLocal, engine
from Utils.AccessControl.AccessUtil import access_interseptor
models.Base.metadata.create_all(bind=engine)
router = APIRouter(
tags=["用户管理"],
prefix="/api/user/admin",
dependencies=[
Depends(access_interseptor)
]
)
def get_db():
try:
db = SessionLocal()
yield db
finally:
db.close()
@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/", summary="删除用户")
def delete_user(uid: int, db: Session = Depends(get_db)):
crud.delete_user(db=db, _id=uid)
return {"info": "Success"}
@router.post("/edit", summary="编辑用户")
def user_edit(uid: int, 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", summary="重置用户密码")
def user_reset_pwd(uid: int, 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 = "Fecr1988"
crud.reset_user_pwd(db=db, passwd=passwd, uid=uid)
return {"info": "Success"}
@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
@router.post("/detail", summary="用户详情", response_model=schemas.User)
def user_detail(uid: int, db: Session = Depends(get_db)):
data = crud.get_user_by_id(db, uid=uid)
if data is None:
raise HTTPException(status_code=404, detail="User Not found")
return data