Skip to content

Commit 0401c01

Browse files
committed
refactor: user add role setting
1 parent 3010fa8 commit 0401c01

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

apps/users/serializers/user.py

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import uuid_utils.compat as uuid
1515
from common.constants.exception_code_constants import ExceptionCodeConstants
1616
from common.constants.permission_constants import RoleConstants, Auth
17+
from common.database_model_manage.database_model_manage import DatabaseModelManage
1718
from common.db.search import page_search
1819
from common.exception.app_exception import AppApiException
1920
from 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

Comments
 (0)