99from apps .system .schemas .auth import CacheName , CacheNamespace
1010from apps .system .schemas .permission import SqlbotPermission , require_permissions
1111from apps .system .schemas .system_schema import PwdEditor , UserCreator , UserEditor , UserGrid , UserInfoDTO , UserLanguage , UserStatus , UserWs
12+ from sqlbot_xpack .audit .models .log_model import OperationType , OperationModules
13+ from sqlbot_xpack .audit .schemas .logger_decorator import LogConfig , system_log
1214from common .core .deps import CurrentUser , SessionDep , Trans
1315from common .core .pagination import Paginator
1416from common .core .schemas import PaginatedResponse , PaginationParams
@@ -117,6 +119,11 @@ async def ws_options(session: SessionDep, current_user: CurrentUser, trans: Tran
117119
118120@router .put ("/ws/{oid}" , summary = f"{ PLACEHOLDER_PREFIX } switch_oid_api" , description = f"{ PLACEHOLDER_PREFIX } switch_oid_api" )
119121@clear_cache (namespace = CacheNamespace .AUTH_INFO , cacheName = CacheName .USER_INFO , keyExpression = "current_user.id" )
122+ @system_log (LogConfig (
123+ operation_type = OperationType .UPDATE ,
124+ module = OperationModules .USER ,
125+ resource_id_expr = "editor.id"
126+ ))
120127async def ws_change (session : SessionDep , current_user : CurrentUser , trans :Trans , oid : int = Path (description = f"{ PLACEHOLDER_PREFIX } oid" )):
121128 ws_list : list [UserWs ] = await user_ws_options (session , current_user .id )
122129 if not any (x .id == oid for x in ws_list ):
@@ -141,8 +148,13 @@ async def query(session: SessionDep, trans: Trans, id: int = Path(description=f"
141148
142149@router .post ("" , summary = f"{ PLACEHOLDER_PREFIX } user_create_api" , description = f"{ PLACEHOLDER_PREFIX } user_create_api" )
143150@require_permissions (permission = SqlbotPermission (role = ['admin' ]))
151+ @system_log (LogConfig (
152+ operation_type = OperationType .CREATE ,
153+ module = OperationModules .USER ,
154+ result_id_expr = "id"
155+ ))
144156async def user_create (session : SessionDep , creator : UserCreator , trans : Trans ):
145- await create (session = session , creator = creator , trans = trans )
157+ return await create (session = session , creator = creator , trans = trans )
146158
147159async def create (session : SessionDep , creator : UserCreator , trans : Trans ):
148160 if check_account_exists (session = session , account = creator .account ):
@@ -169,11 +181,17 @@ async def create(session: SessionDep, creator: UserCreator, trans: Trans):
169181 session .add_all (db_model_list )
170182 user_model .oid = creator .oid_list [0 ]
171183 session .add (user_model )
184+ return user_model
172185
173186
174187@router .put ("" , summary = f"{ PLACEHOLDER_PREFIX } user_update_api" , description = f"{ PLACEHOLDER_PREFIX } user_update_api" )
175188@require_permissions (permission = SqlbotPermission (role = ['admin' ]))
176189@clear_cache (namespace = CacheNamespace .AUTH_INFO , cacheName = CacheName .USER_INFO , keyExpression = "editor.id" )
190+ @system_log (LogConfig (
191+ operation_type = OperationType .UPDATE ,
192+ module = OperationModules .USER ,
193+ resource_id_expr = "editor.id"
194+ ))
177195async def update (session : SessionDep , editor : UserEditor , trans : Trans ):
178196 user_model : UserModel = get_db_user (session = session , user_id = editor .id )
179197 if not user_model :
@@ -207,7 +225,12 @@ async def update(session: SessionDep, editor: UserEditor, trans: Trans):
207225 session .add (user_model )
208226
209227@router .delete ("/{id}" , summary = f"{ PLACEHOLDER_PREFIX } user_del_api" , description = f"{ PLACEHOLDER_PREFIX } user_del_api" )
210- @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
228+ @require_permissions (permission = SqlbotPermission (role = ['admin' ]))
229+ @system_log (LogConfig (
230+ operation_type = OperationType .DELETE ,
231+ module = OperationModules .USER ,
232+ resource_id_expr = "id"
233+ ))
211234async def delete (session : SessionDep , id : int = Path (description = f"{ PLACEHOLDER_PREFIX } uid" )):
212235 await single_delete (session , id )
213236
@@ -231,6 +254,11 @@ async def langChange(session: SessionDep, current_user: CurrentUser, trans: Tran
231254@router .patch ("/pwd/{id}" , summary = f"{ PLACEHOLDER_PREFIX } reset_pwd" , description = f"{ PLACEHOLDER_PREFIX } reset_pwd" )
232255@require_permissions (permission = SqlbotPermission (role = ['admin' ]))
233256@clear_cache (namespace = CacheNamespace .AUTH_INFO , cacheName = CacheName .USER_INFO , keyExpression = "id" )
257+ @system_log (LogConfig (
258+ operation_type = OperationType .UPDATE ,
259+ module = OperationModules .USER ,
260+ resource_id_expr = "id"
261+ ))
234262async def pwdReset (session : SessionDep , current_user : CurrentUser , trans : Trans , id : int = Path (description = f"{ PLACEHOLDER_PREFIX } uid" )):
235263 if not current_user .isAdmin :
236264 raise Exception (trans ('i18n_permission.no_permission' , url = " patch[/user/pwd/id]," , msg = trans ('i18n_permission.only_admin' )))
@@ -240,6 +268,11 @@ async def pwdReset(session: SessionDep, current_user: CurrentUser, trans: Trans,
240268
241269@router .put ("/pwd" , summary = f"{ PLACEHOLDER_PREFIX } update_pwd" , description = f"{ PLACEHOLDER_PREFIX } update_pwd" )
242270@clear_cache (namespace = CacheNamespace .AUTH_INFO , cacheName = CacheName .USER_INFO , keyExpression = "current_user.id" )
271+ @system_log (LogConfig (
272+ operation_type = OperationType .UPDATE ,
273+ module = OperationModules .USER ,
274+ result_id_expr = "id"
275+ ))
243276async def pwdUpdate (session : SessionDep , current_user : CurrentUser , trans : Trans , editor : PwdEditor ):
244277 new_pwd = editor .new_pwd
245278 if not check_pwd_format (new_pwd ):
@@ -249,11 +282,17 @@ async def pwdUpdate(session: SessionDep, current_user: CurrentUser, trans: Trans
249282 raise Exception (trans ('i18n_error' , key = trans ('i18n_user.password' )))
250283 db_user .password = md5pwd (new_pwd )
251284 session .add (db_user )
285+ return db_user
252286
253287
254288@router .patch ("/status" , summary = f"{ PLACEHOLDER_PREFIX } update_status" , description = f"{ PLACEHOLDER_PREFIX } update_status" )
255289@require_permissions (permission = SqlbotPermission (role = ['admin' ]))
256290@clear_cache (namespace = CacheNamespace .AUTH_INFO , cacheName = CacheName .USER_INFO , keyExpression = "statusDto.id" )
291+ @system_log (LogConfig (
292+ operation_type = OperationType .UPDATE ,
293+ module = OperationModules .USER ,
294+ resource_id_expr = "statusDto.id"
295+ ))
257296async def statusChange (session : SessionDep , current_user : CurrentUser , trans : Trans , statusDto : UserStatus ):
258297 if not current_user .isAdmin :
259298 raise Exception (trans ('i18n_permission.no_permission' , url = ", " , msg = trans ('i18n_permission.only_admin' )))
0 commit comments