UnisKB/apps/application/models/api_key_model.py

64 lines
2.8 KiB
Python
Raw Normal View History

2023-11-16 05:29:50 +00:00
# coding=utf-8
"""
@project: maxkb
@Author
@file api_key_model.py
@date2023/11/14 17:15
@desc:
"""
import uuid
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)
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="是否开启公开访问")
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"
class ApplicationPublicAccessClient(AppModelMixin):
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")
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"
indexes = [
models.Index(fields=['client_id']),
]