Browse Source

fix: fix issue https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web/issues/3616

Fred Liang 1 year ago
parent
commit
5af68ac545
2 changed files with 18 additions and 8 deletions
  1. 5 8
      app/api/auth.ts
  2. 13 0
      app/api/google/[...path]/route.ts

+ 5 - 8
app/api/auth.ts

@@ -16,11 +16,11 @@ function getIP(req: NextRequest) {
 
 function parseApiKey(bearToken: string) {
   const token = bearToken.trim().replaceAll("Bearer ", "").trim();
-  const isOpenAiKey = !token.startsWith(ACCESS_CODE_PREFIX);
+  const isApiKey = !token.startsWith(ACCESS_CODE_PREFIX);
 
   return {
-    accessCode: isOpenAiKey ? "" : token.slice(ACCESS_CODE_PREFIX.length),
-    apiKey: isOpenAiKey ? token : "",
+    accessCode: isApiKey ? "" : token.slice(ACCESS_CODE_PREFIX.length),
+    apiKey: isApiKey ? token : "",
   };
 }
 
@@ -49,7 +49,7 @@ export function auth(req: NextRequest) {
   if (serverConfig.hideUserApiKey && !!apiKey) {
     return {
       error: true,
-      msg: "you are not allowed to access openai with your own api key",
+      msg: "you are not allowed to access with your own api key",
     };
   }
 
@@ -64,10 +64,7 @@ export function auth(req: NextRequest) {
 
     if (systemApiKey) {
       console.log("[Auth] use system api key");
-      req.headers.set(
-        "Authorization",
-        `Bearer ${systemApiKey}`,
-      );
+      req.headers.set("Authorization", `Bearer ${systemApiKey}`);
     } else {
       console.log("[Auth] admin did not provide an api key");
     }

+ 13 - 0
app/api/google/[...path]/route.ts

@@ -39,9 +39,22 @@ async function handle(
     10 * 60 * 1000,
   );
 
+  const authResult = auth(req);
+  if (authResult.error) {
+    return NextResponse.json(authResult, {
+      status: 401,
+    });
+  }
+
   const bearToken = req.headers.get("Authorization") ?? "";
   const token = bearToken.trim().replaceAll("Bearer ", "").trim();
 
+  console.log(
+    bearToken,
+    serverConfig.googleApiKey,
+    token ? token : serverConfig.googleApiKey,
+  );
+
   const key = token ? token : serverConfig.googleApiKey;
   if (!key) {
     return NextResponse.json(