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()
|
|
|
|
|
|
|
|
|
2022-10-21 13:27:35 +08:00
|
|
|
@router.post("/create", summary="新建用户", response_model=schemas.InfoBase)
|
2022-10-20 16:29:54 +08:00
|
|
|
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"}
|
|
|
|
|
|
|
|
|
2022-10-21 13:27:35 +08:00
|
|
|
@router.post("/delete", summary="删除用户")
|
2022-10-20 16:29:54 +08:00
|
|
|
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
|