1414import uuid_utils .compat as uuid
1515from common .constants .exception_code_constants import ExceptionCodeConstants
1616from common .constants .permission_constants import RoleConstants , Auth
17+ from common .database_model_manage .database_model_manage import DatabaseModelManage
1718from common .db .search import page_search
1819from common .exception .app_exception import AppApiException
1920from common .utils .common import valid_license , password_encrypt
@@ -182,6 +183,21 @@ def save(self, instance, with_valid=True):
182183 source = "LOCAL" ,
183184 is_active = True
184185 )
186+ # 企业版本 增加用户的角色设置 参数是 role_id [workspace_id]
187+ workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
188+ if workspace_user_role_mapping_model :
189+ # 获取当前用户的角色设置
190+ role_setting = instance .get ('role_setting' )
191+ # role_setting 的数据类型是{"role_id": [workspace_id1, workspace_id2]}
192+ # 如果是系统层级的 workspace_id 是 SYSTEM 或者是NONE
193+ for role_id , workspace_ids in role_setting .items ():
194+ for workspace_id in workspace_ids :
195+ # 创建用户角色映射关系
196+ workspace_user_role_mapping_model .objects .create (
197+ user_id = user .id ,
198+ role_id = role_id ,
199+ workspace_id = workspace_id
200+ )
185201 user .save ()
186202 return UserInstanceSerializer (user ).data
187203
@@ -292,6 +308,20 @@ def edit(self, instance, with_valid=True):
292308 user = User .objects .filter (id = self .data .get ('id' )).first ()
293309 self ._check_admin_modification (user , instance )
294310 self ._update_user_fields (user , instance )
311+ workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
312+ if workspace_user_role_mapping_model :
313+ # 获取当前用户的角色设置
314+ role_setting = instance .get ('role_setting' )
315+ # 全部删除重新添加
316+ workspace_user_role_mapping_model .objects .filter (user_id = user .id ).delete ()
317+ for role_id , workspace_ids in role_setting .items ():
318+ for workspace_id in workspace_ids :
319+ # 创建用户角色映射关系
320+ workspace_user_role_mapping_model .objects .create (
321+ user_id = user .id ,
322+ role_id = role_id ,
323+ workspace_id = workspace_id
324+ )
295325 user .save ()
296326 return UserInstanceSerializer (user ).data
297327
@@ -312,6 +342,26 @@ def one(self, with_valid=True):
312342 if with_valid :
313343 self .is_valid (raise_exception = True )
314344 user = User .objects .filter (id = self .data .get ('id' )).first ()
345+ workspace_user_role_mapping_model = DatabaseModelManage .get_model ("workspace_user_role_mapping" )
346+ if workspace_user_role_mapping_model :
347+ role_setting = {}
348+ workspace_user_role_mapping_list = QuerySet (workspace_user_role_mapping_model ).filter (
349+ user_id = user .id )
350+ for workspace_user_role_mapping in workspace_user_role_mapping_list :
351+ role_id = workspace_user_role_mapping .role_id
352+ workspace_id = workspace_user_role_mapping .workspace_id
353+ if role_id not in role_setting :
354+ role_setting [role_id ] = []
355+ role_setting [role_id ].append (workspace_id )
356+ return {
357+ 'id' : user .id ,
358+ 'username' : user .username ,
359+ 'email' : user .email ,
360+ 'phone' : user .phone ,
361+ 'nick_name' : user .nick_name ,
362+ 'is_active' : user .is_active ,
363+ 'role_setting' : role_setting
364+ }
315365 return UserInstanceSerializer (user ).data
316366
317367 def re_password (self , instance , with_valid = True ):
@@ -322,4 +372,3 @@ def re_password(self, instance, with_valid=True):
322372 user .password = password_encrypt (instance .get ('password' ))
323373 user .save ()
324374 return True
325-
0 commit comments