2023-11-16 05:29:50 +00:00
|
|
|
|
# coding=utf-8
|
|
|
|
|
|
"""
|
|
|
|
|
|
@project: maxkb
|
|
|
|
|
|
@Author:虎
|
|
|
|
|
|
@file: api_key_model.py
|
|
|
|
|
|
@date:2023/11/14 17:15
|
|
|
|
|
|
@desc:
|
|
|
|
|
|
"""
|
|
|
|
|
|
import uuid
|
|
|
|
|
|
|
2024-03-12 09:16:20 +00:00
|
|
|
|
from django.contrib.postgres.fields import ArrayField
|
2023-11-16 05:29:50 +00:00
|
|
|
|
from django.db import models
|
|
|
|
|
|
|
|
|
|
|
|
from application.models import Application
|
|
|
|
|
|
from common.mixins.app_model_mixin import AppModelMixin
|
|
|
|
|
|
from users.models import User
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ApplicationApiKey(AppModelMixin):
|
|
|
|
|
|
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id")
|
|
|
|
|
|
secret_key = models.CharField(max_length=1024, verbose_name="秘钥", unique=True)
|
|
|
|
|
|
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="用户id")
|
|
|
|
|
|
application = models.ForeignKey(Application, on_delete=models.CASCADE, verbose_name="应用id")
|
2023-12-08 05:58:21 +00:00
|
|
|
|
is_active = models.BooleanField(default=True, verbose_name="是否开启")
|
2024-05-08 09:13:13 +00:00
|
|
|
|
allow_cross_domain = models.BooleanField(default=False, verbose_name="是否允许跨域")
|
|
|
|
|
|
cross_domain_list = ArrayField(verbose_name="跨域列表",
|
|
|
|
|
|
base_field=models.CharField(max_length=128, blank=True)
|
|
|
|
|
|
, default=list)
|
2024-03-12 09:16:20 +00:00
|
|
|
|
|
2023-11-16 05:29:50 +00:00
|
|
|
|
class Meta:
|
|
|
|
|
|
db_table = "application_api_key"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ApplicationAccessToken(AppModelMixin):
|
|
|
|
|
|
"""
|
|
|
|
|
|
应用认证token
|
|
|
|
|
|
"""
|
2023-12-13 06:10:51 +00:00
|
|
|
|
application = models.OneToOneField(Application, primary_key=True, on_delete=models.CASCADE, verbose_name="应用id")
|
2023-11-16 05:29:50 +00:00
|
|
|
|
access_token = models.CharField(max_length=128, verbose_name="用户公开访问 认证token", unique=True)
|
|
|
|
|
|
is_active = models.BooleanField(default=True, verbose_name="是否开启公开访问")
|
2024-03-12 09:16:20 +00:00
|
|
|
|
access_num = models.IntegerField(default=100, verbose_name="访问次数")
|
|
|
|
|
|
white_active = models.BooleanField(default=False, verbose_name="是否开启白名单")
|
|
|
|
|
|
white_list = ArrayField(verbose_name="白名单列表",
|
|
|
|
|
|
base_field=models.CharField(max_length=128, blank=True)
|
|
|
|
|
|
, default=list)
|
2024-04-25 06:05:59 +00:00
|
|
|
|
show_source = models.BooleanField(default=False, verbose_name="是否显示知识来源")
|
2023-11-16 05:29:50 +00:00
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
|
db_table = "application_access_token"
|
2024-03-13 21:43:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ApplicationPublicAccessClient(AppModelMixin):
|
2024-12-30 02:24:36 +00:00
|
|
|
|
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id")
|
|
|
|
|
|
client_id = models.UUIDField(max_length=128, default=uuid.uuid1, verbose_name="公共访问链接客户端id")
|
2024-03-13 21:43:01 +00:00
|
|
|
|
application = models.ForeignKey(Application, on_delete=models.CASCADE, verbose_name="应用id")
|
|
|
|
|
|
access_num = models.IntegerField(default=0, verbose_name="访问总次数次数")
|
|
|
|
|
|
intraday_access_num = models.IntegerField(default=0, verbose_name="当日访问次数")
|
|
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
|
db_table = "application_public_access_client"
|
2024-12-30 02:24:36 +00:00
|
|
|
|
indexes = [
|
|
|
|
|
|
models.Index(fields=['client_id']),
|
|
|
|
|
|
]
|