11from typing import Optional
2- from fastapi import APIRouter , Query
2+ from fastapi import APIRouter , HTTPException , Query
33from sqlmodel import exists , or_ , select
44from apps .system .models .system_model import UserWsModel , WorkspaceBase , WorkspaceEditor , WorkspaceModel
55from apps .system .models .user import UserModel
@@ -105,11 +105,14 @@ async def pager(
105105
106106
107107@router .post ("/uws" )
108- async def create (session : SessionDep , creator : UserWsDTO ):
108+ async def create (session : SessionDep , current_user : CurrentUser , creator : UserWsDTO ):
109+ if not current_user .isAdmin and current_user .weight == 0 :
110+ raise HTTPException ("no permission to execute" )
111+ oid : int = creator .oid if current_user .isAdmin else current_user .oid
109112 # 判断uid_list以及oid合法性
110113 db_model_list = [
111114 UserWsModel .model_validate ({
112- "oid" : creator . oid ,
115+ "oid" : oid ,
113116 "uid" : uid ,
114117 "weight" : creator .weight
115118 })
@@ -133,10 +136,13 @@ async def edit(session: SessionDep, editor: UserWsEditor):
133136 session .commit ()
134137
135138@router .delete ("/uws" )
136- async def delete (session : SessionDep , dto : UserWsBase ):
137- db_model_list : list [UserWsModel ] = session .exec (select (UserWsModel ).where (UserWsModel .uid .in_ (dto .uid_list ), UserWsModel .oid == dto .oid )).all ()
139+ async def delete (session : SessionDep , current_user : CurrentUser , dto : UserWsBase ):
140+ if not current_user .isAdmin and current_user .weight == 0 :
141+ raise HTTPException ("no permission to execute" )
142+ oid : int = dto .oid if current_user .isAdmin else current_user .oid
143+ db_model_list : list [UserWsModel ] = session .exec (select (UserWsModel ).where (UserWsModel .uid .in_ (dto .uid_list ), UserWsModel .oid == oid )).all ()
138144 if not db_model_list :
139- raise ValueError (f"UserWsModel not found" )
145+ raise HTTPException (f"UserWsModel not found" )
140146 for db_model in db_model_list :
141147 session .delete (db_model )
142148 session .commit ()
0 commit comments