mirror of
https://github.com/1Panel-dev/MaxKB.git
synced 2025-12-26 01:33:05 +00:00
feat: 应用 Api-key 开关
This commit is contained in:
parent
82ffcc6c94
commit
5db9ce45c3
|
|
@ -0,0 +1,28 @@
|
|||
# Generated by Django 4.1.10 on 2023-12-06 06:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('application', '0006_applicationaccesstoken_applicationapikey'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='application',
|
||||
name='api_key_is_active',
|
||||
field=models.BooleanField(default=True, verbose_name='api_key是否可用'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='application',
|
||||
name='desc',
|
||||
field=models.CharField(default='', max_length=128, verbose_name='引用描述'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='application',
|
||||
name='prologue',
|
||||
field=models.CharField(default='', max_length=1024, verbose_name='开场白'),
|
||||
),
|
||||
]
|
||||
|
|
@ -28,6 +28,7 @@ class Application(AppModelMixin):
|
|||
status = models.BooleanField(default=True, verbose_name="是否发布")
|
||||
user = models.ForeignKey(User, on_delete=models.DO_NOTHING)
|
||||
model = models.ForeignKey(Model, on_delete=models.DO_NOTHING, db_constraint=False)
|
||||
api_key_is_active = models.BooleanField(verbose_name="api_key是否可用", default=True)
|
||||
|
||||
class Meta:
|
||||
db_table = "application"
|
||||
|
|
|
|||
|
|
@ -134,6 +134,7 @@ class ApplicationSerializer(serializers.Serializer):
|
|||
example = serializers.ListSerializer(required=False, child=serializers.CharField(required=True))
|
||||
dataset_id_list = serializers.ListSerializer(required=False, child=serializers.UUIDField(required=True))
|
||||
status = serializers.BooleanField(required=False)
|
||||
api_key_is_active = serializers.BooleanField(required=False)
|
||||
|
||||
def is_valid(self, *, user_id=None, raise_exception=False):
|
||||
super().is_valid(raise_exception=True)
|
||||
|
|
@ -286,7 +287,8 @@ class ApplicationSerializer(serializers.Serializer):
|
|||
|
||||
model = QuerySet(Model).get(id=instance.get('model_id') if 'model_id' in instance else application.model_id)
|
||||
|
||||
update_keys = ['name', 'desc', 'model_id', 'multiple_rounds_dialogue', 'prologue', 'example', 'status']
|
||||
update_keys = ['name', 'desc', 'model_id', 'multiple_rounds_dialogue', 'prologue', 'example', 'status',
|
||||
'api_key_is_active']
|
||||
for update_key in update_keys:
|
||||
if update_key in instance and instance.get(update_key) is not None:
|
||||
if update_key == 'multiple_rounds_dialogue':
|
||||
|
|
|
|||
|
|
@ -134,7 +134,9 @@ class ApplicationApi(ApiMixin):
|
|||
'dataset_id_list': openapi.Schema(type=openapi.TYPE_ARRAY,
|
||||
items=openapi.Schema(type=openapi.TYPE_STRING),
|
||||
title="关联数据集Id列表", description="关联数据集Id列表"),
|
||||
'status': openapi.Schema(type=openapi.TYPE_BOOLEAN, title='状态', description="状态")
|
||||
'status': openapi.Schema(type=openapi.TYPE_BOOLEAN, title='状态', description="状态"),
|
||||
'api_key_is_active': openapi.Schema(type=openapi.TYPE_BOOLEAN, title='api_key是否可用',
|
||||
default=True)
|
||||
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ class TokenAuth(TokenAuthentication):
|
|||
application_api_key = QuerySet(ApplicationApiKey).filter(secret_key=auth).first()
|
||||
if application_api_key is None:
|
||||
raise AppAuthenticationFailed(500, "secret_key 无效")
|
||||
if not application_api_key.application.api_key_is_active:
|
||||
raise AppAuthenticationFailed(500, "secret_key 无效")
|
||||
permission_list = [Permission(group=Group.APPLICATION,
|
||||
operate=Operate.USE,
|
||||
dynamic_tag=str(
|
||||
|
|
|
|||
Loading…
Reference in New Issue