fix: update license validation logic in profile and user role update functions

This commit is contained in:
wxg0103 2025-07-16 18:03:33 +08:00
parent c7a9a4d4bd
commit 778b706776
2 changed files with 15 additions and 3 deletions

View File

@ -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}

View File

@ -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):