From 778b70677639231fb77da13dbaa2a15a50a42fe7 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Wed, 16 Jul 2025 18:03:33 +0800 Subject: [PATCH] fix: update license validation logic in profile and user role update functions --- apps/system_manage/serializers/system.py | 4 ++-- apps/users/serializers/user.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/system_manage/serializers/system.py b/apps/system_manage/serializers/system.py index 3f6f2d8b3..b1d1baa71 100644 --- a/apps/system_manage/serializers/system.py +++ b/apps/system_manage/serializers/system.py @@ -13,6 +13,7 @@ from rest_framework import serializers from django.core.cache import cache from common.constants.cache_version import Cache_Version +from common.database_model_manage.database_model_manage import DatabaseModelManage from maxkb import settings @@ -35,7 +36,6 @@ class SystemProfileSerializer(serializers.Serializer): @staticmethod def profile(): version = os.environ.get('MAXKB_VERSION') - license_is_valid = cache.get(Cache_Version.SYSTEM.get_key(key='license_is_valid'), - version=Cache_Version.SYSTEM.get_version()) + license_is_valid = DatabaseModelManage.get_model('license_is_valid') or (lambda: False) return {'version': version, 'edition': settings.edition, 'license_is_valid': license_is_valid if license_is_valid is not None else False} diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 2d3454e22..b37409bd6 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -567,9 +567,21 @@ class UserManageSerializer(serializers.Serializer): def update_user_role(instance, user, user_id=None): workspace_user_role_mapping_model = DatabaseModelManage.get_model("workspace_user_role_mapping") if workspace_user_role_mapping_model: + role_setting = instance.get('role_setting') + license_is_valid = DatabaseModelManage.get_model('license_is_valid') or (lambda: False) + license_is_valid = license_is_valid if license_is_valid is not None else False + if not license_is_valid and isinstance(role_setting, list) and len(role_setting) == 0: + workspace_user_role_mapping_model.objects.create( + id=uuid.uuid7(), + user_id=user.id, + role_id=RoleConstants.USER.name, + workspace_id='default' + ) + return + is_admin = workspace_user_role_mapping_model.objects.filter(user_id=user_id, role_id=RoleConstants.ADMIN.name).exists() - role_setting = instance.get('role_setting') + if not role_setting or (len(role_setting) == 1 and role_setting[0].get('role_id') == '' and len(role_setting[0].get('workspace_ids', [])) == 0):