| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # coding=utf-8
- """
- 平台API Key管理视图
- 提供API Key的CRUD操作
- """
- from rest_framework.views import APIView
- from django.utils.translation import gettext_lazy as _
- from common.auth import TokenAuth
- from common.log.log import log
- from common.result import result
- from models_provider.services import platform_api_key_service
- class ApiKeyView(APIView):
- """平台API Key管理"""
- authentication_classes = [TokenAuth]
- def get(self, request):
- """获取用户的API Key列表"""
- keys = platform_api_key_service.get_user_api_keys(request.user)
- data = []
- for k in keys:
- data.append({
- "id": str(k.id),
- "api_key_prefix": k.api_key_prefix,
- "name": k.name or "未命名",
- "status": k.status,
- "last_used_at": k.last_used_at,
- "create_time": k.create_time,
- })
- return result.success(data)
- @log(menu='api_key', operate='Create API Key',
- get_operation_object=lambda r, k: {'name': r.data.get('name', '未命名')})
- def post(self, request):
- """创建API Key(完整密钥仅返回一次)"""
- name = request.data.get('name')
- try:
- key_data = platform_api_key_service.create_api_key(request.user, name=name)
- return result.success(key_data)
- except ValueError as e:
- return result.error(str(e))
- class ApiKeyOperateView(APIView):
- """单个API Key操作"""
- authentication_classes = [TokenAuth]
- def put(self, request, key_id):
- """更新API Key状态"""
- status_val = request.data.get('status')
- try:
- platform_api_key_service.update_api_key_status(key_id, request.user, status_val)
- return result.success(None)
- except ValueError as e:
- return result.error(str(e))
- def delete(self, request, key_id):
- """删除API Key"""
- try:
- platform_api_key_service.delete_api_key(key_id, request.user)
- return result.success(None)
- except ValueError as e:
- return result.error(str(e))
|