user-wsc/User/router_user_admin.py

75 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.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