From b3698b30ca417026bb6ebe54e021daf2ab6249a3 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Mon, 14 Jul 2025 18:02:14 +0800 Subject: [PATCH] feat: add authentication fields to ApplicationAccessToken and update related serializers --- ...tionaccesstoken_authentication_and_more.py | 23 ++++++++++++++++ .../models/application_access_token.py | 2 ++ .../serializers/application_access_token.py | 26 ++++++++----------- 3 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 apps/application/migrations/0002_applicationaccesstoken_authentication_and_more.py diff --git a/apps/application/migrations/0002_applicationaccesstoken_authentication_and_more.py b/apps/application/migrations/0002_applicationaccesstoken_authentication_and_more.py new file mode 100644 index 000000000..280c2d674 --- /dev/null +++ b/apps/application/migrations/0002_applicationaccesstoken_authentication_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2.3 on 2025-07-14 09:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('application', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='applicationaccesstoken', + name='authentication', + field=models.BooleanField(default=False, verbose_name='是否需要认证'), + ), + migrations.AddField( + model_name='applicationaccesstoken', + name='authentication_value', + field=models.JSONField(default=dict, verbose_name='认证的值'), + ), + ] diff --git a/apps/application/models/application_access_token.py b/apps/application/models/application_access_token.py index 93b09d40d..bbad58f1e 100644 --- a/apps/application/models/application_access_token.py +++ b/apps/application/models/application_access_token.py @@ -27,6 +27,8 @@ class ApplicationAccessToken(AppModelMixin): , default=list) show_source = models.BooleanField(default=False, verbose_name="是否显示知识来源") show_exec = models.BooleanField(default=False, verbose_name="是否显示执行详情") + authentication = models.BooleanField(default=False, verbose_name="是否需要认证") + authentication_value = models.JSONField(verbose_name="认证的值", default=dict) language = models.CharField(max_length=10, verbose_name="语言", default=None, null=True) diff --git a/apps/application/serializers/application_access_token.py b/apps/application/serializers/application_access_token.py index e50e34578..aafc2a70e 100644 --- a/apps/application/serializers/application_access_token.py +++ b/apps/application/serializers/application_access_token.py @@ -79,18 +79,16 @@ class AccessTokenSerializer(serializers.Serializer): application_access_token.language = instance.get('language') if 'language' not in instance or instance.get('language') is None: application_access_token.language = None + application_access_token.save() - application_setting_model = DatabaseModelManage.get_model('application_setting') license_is_valid = cache.get(Cache_Version.SYSTEM.get_key(key='license_is_valid'), version=Cache_Version.SYSTEM.get_version()) - if application_setting_model is not None and license_is_valid: - application_setting, _ = application_setting_model.objects.get_or_create( - application_id=self.data.get('application_id')) - if application_setting is not None and instance.get('authentication') is not None and instance.get( + if license_is_valid: + if instance.get('authentication') is not None and instance.get( 'authentication_value') is not None: - application_setting.authentication = instance.get('authentication') - application_setting.authentication_value = instance.get('authentication_value') - application_setting.save() + application_access_token.authentication = instance.get('authentication') + application_access_token.authentication_value = instance.get('authentication_value') + application_access_token.save() return self.one(with_valid=False) def one(self, with_valid=True): @@ -105,14 +103,12 @@ class AccessTokenSerializer(serializers.Serializer): str(uuid.uuid7()).encode()).hexdigest()[ 8:24], is_active=True) application_access_token.save() - application_setting_model = DatabaseModelManage.get_model('application_setting') other = {} - if application_setting_model is not None: - application_setting, _ = application_setting_model.objects.get_or_create( - application_id=self.data.get('application_id')) - if application_setting is not None: - other = {'authentication': application_setting.authentication, - 'authentication_value': application_setting.authentication_value} + license_is_valid = cache.get(Cache_Version.SYSTEM.get_key(key='license_is_valid'), + version=Cache_Version.SYSTEM.get_version()) + if license_is_valid: + other = {'authentication': application_access_token.authentication, + 'authentication_value': application_access_token.authentication_value} return {'application_id': application_access_token.application_id, 'access_token': application_access_token.access_token,