diff --git a/app/api/auth.ts b/app/api/auth.ts index e073d6220..4a12268a9 100644 --- a/app/api/auth.ts +++ b/app/api/auth.ts @@ -28,7 +28,12 @@ export function auth(req: NextRequest, modelProvider: ModelProvider) { const authToken = req.headers.get("Authorization") ?? ""; // check if it is openai api key or user token - const { accessCode, apiKey } = parseApiKey(authToken); + let { accessCode, apiKey } = parseApiKey(authToken); + + if (modelProvider === ModelProvider.GeminiPro) { + const googleAuthToken = req.headers.get("x-goog-api-key") ?? ""; + apiKey = googleAuthToken.trim().replaceAll("Bearer ", "").trim(); + } const hashedCode = md5.hash(accessCode ?? "").trim(); diff --git a/app/client/api.ts b/app/client/api.ts index 19e77645d..67cdc541b 100644 --- a/app/client/api.ts +++ b/app/client/api.ts @@ -180,11 +180,7 @@ export function getHeaders(ignoreHeaders?: boolean) { }; } const isAzure = accessStore.provider === ServiceProvider.Azure; - const authHeader = isGoogle - ? "x-goog-api-key" - : isAzure - ? "api-key" - : "Authorization"; + let authHeader = isAzure ? "api-key" : "Authorization"; const apiKey = isGoogle ? accessStore.googleApiKey : isAzure @@ -197,6 +193,7 @@ export function getHeaders(ignoreHeaders?: boolean) { // use user's api key first if (validString(apiKey)) { + authHeader = isGoogle ? "x-goog-api-key" : authHeader; headers[authHeader] = makeBearer(apiKey); } else if ( accessStore.enabledAccessControl() &&