diff --git a/src/middleware/auth.js b/src/middleware/auth.js index ee39577e..02fbc974 100644 --- a/src/middleware/auth.js +++ b/src/middleware/auth.js @@ -198,11 +198,14 @@ const authenticateApiKey = async (req, res, next) => { name: validation.keyData.name, tokenLimit: validation.keyData.tokenLimit, claudeAccountId: validation.keyData.claudeAccountId, + geminiAccountId: validation.keyData.geminiAccountId, + permissions: validation.keyData.permissions, concurrencyLimit: validation.keyData.concurrencyLimit, rateLimitWindow: validation.keyData.rateLimitWindow, rateLimitRequests: validation.keyData.rateLimitRequests, enableModelRestriction: validation.keyData.enableModelRestriction, - restrictedModels: validation.keyData.restrictedModels + restrictedModels: validation.keyData.restrictedModels, + usage: validation.keyData.usage }; req.usage = validation.keyData.usage; diff --git a/src/routes/geminiRoutes.js b/src/routes/geminiRoutes.js index 91618d16..c5fd850c 100644 --- a/src/routes/geminiRoutes.js +++ b/src/routes/geminiRoutes.js @@ -29,7 +29,7 @@ router.post('/messages', authenticateApiKey, async (req, res) => { let abortController = null; try { - const apiKeyData = req.apiKeyData; + const apiKeyData = req.apiKey; // 检查权限 if (!checkPermissions(apiKeyData, 'gemini')) { @@ -137,7 +137,7 @@ router.post('/messages', authenticateApiKey, async (req, res) => { // 处理速率限制 if (error.status === 429) { - if (req.apiKeyData && req.account) { + if (apiKeyData && req.account) { await geminiAccountService.setAccountRateLimited(req.account.id, true); } } @@ -163,7 +163,7 @@ router.post('/messages', authenticateApiKey, async (req, res) => { // 获取可用模型列表 router.get('/models', authenticateApiKey, async (req, res) => { try { - const apiKeyData = req.apiKeyData; + const apiKeyData = req.apiKey; // 检查权限 if (!checkPermissions(apiKeyData, 'gemini')) { @@ -215,7 +215,7 @@ router.get('/models', authenticateApiKey, async (req, res) => { // 使用情况统计(与 Claude 共用) router.get('/usage', authenticateApiKey, async (req, res) => { try { - const usage = req.apiKeyData.usage; + const usage = req.apiKey.usage; res.json({ object: 'usage', @@ -240,7 +240,7 @@ router.get('/usage', authenticateApiKey, async (req, res) => { // API Key 信息(与 Claude 共用) router.get('/key-info', authenticateApiKey, async (req, res) => { try { - const keyData = req.apiKeyData; + const keyData = req.apiKey; res.json({ id: keyData.id, diff --git a/src/routes/openaiClaudeRoutes.js b/src/routes/openaiClaudeRoutes.js index c419a5f0..9b570e3c 100644 --- a/src/routes/openaiClaudeRoutes.js +++ b/src/routes/openaiClaudeRoutes.js @@ -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) { diff --git a/src/routes/openaiGeminiRoutes.js b/src/routes/openaiGeminiRoutes.js index be061a80..64e10b4f 100644 --- a/src/routes/openaiGeminiRoutes.js +++ b/src/routes/openaiGeminiRoutes.js @@ -29,7 +29,7 @@ router.post('/v1/chat/completions', authenticateApiKey, async (req, res) => { let abortController = null; try { - const apiKeyData = req.apiKeyData; + const apiKeyData = req.apiKey; // 检查权限 if (!checkPermissions(apiKeyData, 'gemini')) { @@ -159,7 +159,7 @@ router.post('/v1/chat/completions', authenticateApiKey, async (req, res) => { // 处理速率限制 if (error.status === 429) { - if (req.apiKeyData && req.account) { + if (apiKeyData && req.account) { await geminiAccountService.setAccountRateLimited(req.account.id, true); } } @@ -186,7 +186,7 @@ router.post('/v1/chat/completions', authenticateApiKey, async (req, res) => { // OpenAI 兼容的模型列表端点 router.get('/v1/models', authenticateApiKey, async (req, res) => { try { - const apiKeyData = req.apiKeyData; + const apiKeyData = req.apiKey; // 检查权限 if (!checkPermissions(apiKeyData, 'gemini')) { @@ -244,7 +244,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; // 检查权限