Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions apps/application/models/application_api_key.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class ApplicationApiKey(AppModelMixin):
, default=list)
expire_time = models.DateTimeField(verbose_name="过期时间", default=timezone.now)
is_permanent = models.BooleanField(default=True, verbose_name="是否永久")
user = models.ForeignKey("users.User", on_delete=models.SET_NULL, db_constraint=False, blank=True, null=True,
verbose_name="创建用户")

class Meta:
db_table = "application_api_key"
24 changes: 22 additions & 2 deletions apps/application/serializers/application_api_key.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import hashlib

import uuid_utils.compat as uuid
from django.core.exceptions import ObjectDoesNotExist
from django.db.models import QuerySet
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
Expand All @@ -14,10 +15,26 @@


class ApplicationKeySerializerModel(serializers.ModelSerializer):
user = serializers.SerializerMethodField()

class Meta:
model = ApplicationApiKey
fields = "__all__"

@staticmethod
def get_user(obj):
if not obj.user_id:
return None
try:
user = obj.user
except ObjectDoesNotExist:
return None
return {
"id": obj.user_id,
"username": user.username,
"nick_name": user.nick_name,
}


class EditApplicationKeySerializer(serializers.Serializer):
is_active = serializers.BooleanField(required=False, label=_("Availability"))
Expand All @@ -36,6 +53,7 @@ class EditApplicationKeySerializer(serializers.Serializer):
class ApplicationKeySerializer(serializers.Serializer):
workspace_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_("Workspace ID"))
application_id = serializers.UUIDField(required=True, label=_('application id'))
user_id = serializers.UUIDField(required=False, allow_null=True, label=_('user id'))
order_by = serializers.CharField(required=False, label=_('order by'), allow_null=True, allow_blank=True)

def is_valid(self, *, raise_exception=False):
Expand All @@ -51,18 +69,20 @@ def generate(self, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
application_id = self.data.get("application_id")
user_id = self.data.get("user_id")
secret_key = 'agent-' + hashlib.md5(str(uuid.uuid7()).encode()).hexdigest()
application_api_key = ApplicationApiKey(id=uuid.uuid7(),
secret_key=secret_key,
application_id=application_id)
application_id=application_id,
user_id=user_id)
application_api_key.save()
return ApplicationKeySerializerModel(application_api_key).data

def page(self, current_page: int, page_size: int, with_valid=True):
if with_valid:
self.is_valid(raise_exception=True)
application_id = self.data.get("application_id")
query_set = QuerySet(ApplicationApiKey).filter(application_id=application_id)
query_set = QuerySet(ApplicationApiKey).filter(application_id=application_id).select_related('user')
order_by = '-create_time' if self.data.get('order_by') is None or self.data.get(
'order_by') == '' else self.data.get('order_by')
query_set = query_set.order_by(order_by)
Expand Down
3 changes: 2 additions & 1 deletion apps/application/views/application_api_key.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ class ApplicationKey(APIView):
def post(self, request: Request, workspace_id: str, application_id: str):
return result.success(ApplicationKeySerializer(
data={'application_id': application_id,
'workspace_id': workspace_id}).generate())
'workspace_id': workspace_id,
'user_id': request.user.id}).generate())

class Page(APIView):
authentication_classes = [TokenAuth]
Expand Down
5 changes: 5 additions & 0 deletions ui/src/views/application-overview/component/APIKeyDialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@
</span>
</template>
</el-table-column>
<el-table-column :label="$t('common.creator')" width="130" show-overflow-tooltip>
<template #default="{ row }">
{{ row.user?.nick_name || row.user?.username || '-' }}
</template>
</el-table-column>
<el-table-column :label="$t('common.createDate')" width="170" prop="create_time" sortable>
<template #default="{ row }">
{{ datetimeFormat(row.create_time) }}
Expand Down
Loading