fix: 修复 OpenAI 路由中的 req.apiKeyData undefined 错误

- 将所有路由中的 req.apiKeyData 改为 req.apiKey(与中间件一致)
- 在 authenticateApiKey 中间件中添加缺失的字段(permissions, geminiAccountId, usage)
- 修复 openaiClaudeRoutes.js、openaiGeminiRoutes.js 和 geminiRoutes.js 中的引用错误
- 确保 API 权限检查正常工作

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
shaw
2025-07-22 13:08:24 +08:00
parent 6b0832bc2d
commit 9ad7feb94c
4 changed files with 17 additions and 14 deletions

View File

@@ -33,7 +33,7 @@ function checkPermissions(apiKeyData, requiredPermission = 'claude') {
// 📋 OpenAI 兼容的模型列表端点
router.get('/v1/models', authenticateApiKey, async (req, res) => {
try {
const apiKeyData = req.apiKeyData;
const apiKeyData = req.apiKey;
// 检查权限
if (!checkPermissions(apiKeyData, 'claude')) {
@@ -87,7 +87,7 @@ router.get('/v1/models', authenticateApiKey, async (req, res) => {
// 📄 OpenAI 兼容的模型详情端点
router.get('/v1/models/:model', authenticateApiKey, async (req, res) => {
try {
const apiKeyData = req.apiKeyData;
const apiKeyData = req.apiKey;
const modelId = req.params.model;
// 检查权限
@@ -339,13 +339,13 @@ async function handleChatCompletion(req, res, apiKeyData) {
// 🚀 OpenAI 兼容的聊天完成端点
router.post('/v1/chat/completions', authenticateApiKey, async (req, res) => {
await handleChatCompletion(req, res, req.apiKeyData);
await handleChatCompletion(req, res, req.apiKey);
});
// 🔧 OpenAI 兼容的 completions 端点(传统格式,转换为 chat 格式)
router.post('/v1/completions', authenticateApiKey, async (req, res) => {
try {
const apiKeyData = req.apiKeyData;
const apiKeyData = req.apiKey;
// 验证必需参数
if (!req.body.prompt) {