Files
2025-12-14 15:40:49 +08:00

57 lines
1.9 KiB
Python

"""用户 API Key 管理相关路由"""
from flask import Blueprint, request, jsonify
from flask_jwt_extended import jwt_required, get_jwt_identity
from services.apikey_service import APIKeyService
apikey_bp = Blueprint('apikey', __name__)
@apikey_bp.route('/keys', methods=['GET'])
@jwt_required()
def list_api_keys():
"""获取用户的所有 API Key"""
user_id = get_jwt_identity()
result, status_code = APIKeyService.list_api_keys(user_id)
return jsonify(result), status_code
@apikey_bp.route('/keys', methods=['POST'])
@jwt_required()
def create_api_key():
"""创建新的 API Key"""
user_id = get_jwt_identity()
data = request.get_json()
result, status_code = APIKeyService.create_api_key(user_id, data)
return jsonify(result), status_code
@apikey_bp.route('/keys/<int:key_id>', methods=['GET'])
@jwt_required()
def get_api_key(key_id):
"""获取单个 API Key 详情"""
user_id = get_jwt_identity()
result, status_code = APIKeyService.get_api_key(user_id, key_id)
return jsonify(result), status_code
@apikey_bp.route('/keys/<int:key_id>', methods=['PUT'])
@jwt_required()
def update_api_key(key_id):
"""更新 API Key 名称或状态"""
user_id = get_jwt_identity()
data = request.get_json()
result, status_code = APIKeyService.update_api_key(user_id, key_id, data)
return jsonify(result), status_code
@apikey_bp.route('/keys/<int:key_id>', methods=['DELETE'])
@jwt_required()
def delete_api_key(key_id):
"""删除 API Key"""
user_id = get_jwt_identity()
result, status_code = APIKeyService.delete_api_key(user_id, key_id)
return jsonify(result), status_code
@apikey_bp.route('/keys/<int:key_id>/regenerate', methods=['POST'])
@jwt_required()
def regenerate_api_key(key_id):
"""重置/轮换 API Key"""
user_id = get_jwt_identity()
result, status_code = APIKeyService.regenerate_api_key(user_id, key_id)
return jsonify(result), status_code