55from apps .system .crud .workspace import reset_single_user_oid , reset_user_oid
66from apps .system .models .system_model import UserWsModel , WorkspaceBase , WorkspaceEditor , WorkspaceModel
77from apps .system .models .user import UserModel
8+ from apps .system .schemas .permission import SqlbotPermission , require_permissions
89from apps .system .schemas .system_schema import UserWsBase , UserWsDTO , UserWsEditor , UserWsOption , WorkspaceUser
910from common .core .deps import CurrentUser , SessionDep , Trans
1011from common .core .pagination import Paginator
1415router = APIRouter (tags = ["system/workspace" ], prefix = "/system/workspace" )
1516
1617@router .get ("/uws/option/pager/{pageNum}/{pageSize}" , response_model = PaginatedResponse [UserWsOption ])
18+ @require_permissions (permission = SqlbotPermission (role = ['ws_admin' ]))
1719async def option_pager (
1820 session : SessionDep ,
1921 current_user : CurrentUser ,
@@ -48,6 +50,7 @@ async def option_pager(
4850 )
4951
5052@router .get ("/uws/option" , response_model = UserWsOption | None )
53+ @require_permissions (permission = SqlbotPermission (role = ['ws_admin' ]))
5154async def option_user (
5255 session : SessionDep ,
5356 current_user : CurrentUser ,
@@ -74,7 +77,9 @@ async def option_user(
7477 )
7578 return session .exec (stmt ).first ()
7679
80+
7781@router .get ("/uws/pager/{pageNum}/{pageSize}" , response_model = PaginatedResponse [WorkspaceUser ])
82+ @require_permissions (permission = SqlbotPermission (role = ['ws_admin' ]))
7883async def pager (
7984 session : SessionDep ,
8085 current_user : CurrentUser ,
@@ -114,7 +119,8 @@ async def pager(
114119 )
115120
116121
117- @router .post ("/uws" )
122+ @router .post ("/uws" )
123+ @require_permissions (permission = SqlbotPermission (role = ['ws_admin' ]))
118124async def create (session : SessionDep , current_user : CurrentUser , trans : Trans , creator : UserWsDTO ):
119125 if not current_user .isAdmin and current_user .weight == 0 :
120126 raise Exception (trans ('i18n_permission.no_permission' , url = '' , msg = '' ))
@@ -136,7 +142,8 @@ async def create(session: SessionDep, current_user: CurrentUser, trans: Trans, c
136142 session .add_all (db_model_list )
137143 session .commit ()
138144
139- @router .put ("/uws" )
145+ @router .put ("/uws" )
146+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
140147async def edit (session : SessionDep , trans : Trans , editor : UserWsEditor ):
141148 if not editor .oid or not editor .uid :
142149 raise Exception (trans ('i18n_miss_args' , key = '[oid, uid]' ))
@@ -152,7 +159,8 @@ async def edit(session: SessionDep, trans: Trans, editor: UserWsEditor):
152159 await clean_user_cache (editor .uid )
153160 session .commit ()
154161
155- @router .delete ("/uws" )
162+ @router .delete ("/uws" )
163+ @require_permissions (permission = SqlbotPermission (role = ['ws_admin' ]))
156164async def delete (session : SessionDep , current_user : CurrentUser , trans : Trans , dto : UserWsBase ):
157165 if not current_user .isAdmin and current_user .weight == 0 :
158166 raise Exception (trans ('i18n_permission.no_permission' , url = '' , msg = '' ))
@@ -170,6 +178,7 @@ async def delete(session: SessionDep, current_user: CurrentUser, trans: Trans, d
170178 session .commit ()
171179
172180@router .get ("" , response_model = list [WorkspaceModel ])
181+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
173182async def query (session : SessionDep , trans : Trans ):
174183 list_result = session .exec (select (WorkspaceModel )).all ()
175184 for ws in list_result :
@@ -179,13 +188,15 @@ async def query(session: SessionDep, trans: Trans):
179188 return list_result
180189
181190@router .post ("" )
191+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
182192async def add (session : SessionDep , creator : WorkspaceBase ):
183193 db_model = WorkspaceModel .model_validate (creator )
184194 db_model .create_time = get_timestamp ()
185195 session .add (db_model )
186196 session .commit ()
187197
188198@router .put ("" )
199+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
189200async def update (session : SessionDep , editor : WorkspaceEditor ):
190201 id = editor .id
191202 db_model = session .get (WorkspaceModel , id )
@@ -195,7 +206,8 @@ async def update(session: SessionDep, editor: WorkspaceEditor):
195206 session .add (db_model )
196207 session .commit ()
197208
198- @router .get ("/{id}" , response_model = WorkspaceModel )
209+ @router .get ("/{id}" , response_model = WorkspaceModel )
210+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
199211async def get_one (session : SessionDep , trans : Trans , id : int ):
200212 db_model = session .get (WorkspaceModel , id )
201213 if not db_model :
@@ -204,7 +216,8 @@ async def get_one(session: SessionDep, trans: Trans, id: int):
204216 db_model .name = trans (db_model .name )
205217 return db_model
206218
207- @router .delete ("/{id}" )
219+ @router .delete ("/{id}" )
220+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
208221async def single_delete (session : SessionDep , current_user : CurrentUser , id : int ):
209222 if not current_user .isAdmin :
210223 raise HTTPException ("only admin can delete workspace" )
0 commit comments