fix the gemininkey issue
Browse files- lib/auth.ts +7 -1
- lib/gemini.ts +22 -0
- lib/validate-env.ts +0 -1
lib/auth.ts
CHANGED
|
@@ -181,7 +181,13 @@ export const { handlers, signIn, signOut, auth } = NextAuth({
|
|
| 181 |
session.user.id = dbUser.id;
|
| 182 |
session.user.name = dbUser.name || session.user.name;
|
| 183 |
session.user.image = dbUser.image || session.user.image;
|
| 184 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 185 |
session.user.accessToken = dbUser.accessToken || undefined;
|
| 186 |
} else {
|
| 187 |
// Only use admin fallback if NOT found in DB (unlikely for Google login)
|
|
|
|
| 181 |
session.user.id = dbUser.id;
|
| 182 |
session.user.name = dbUser.name || session.user.name;
|
| 183 |
session.user.image = dbUser.image || session.user.image;
|
| 184 |
+
// START FIX: Check if this is the admin user
|
| 185 |
+
if (dbUser.id === "admin-user") {
|
| 186 |
+
session.user.role = "admin";
|
| 187 |
+
} else {
|
| 188 |
+
session.user.role = "user";
|
| 189 |
+
}
|
| 190 |
+
// END FIX
|
| 191 |
session.user.accessToken = dbUser.accessToken || undefined;
|
| 192 |
} else {
|
| 193 |
// Only use admin fallback if NOT found in DB (unlikely for Google login)
|
lib/gemini.ts
CHANGED
|
@@ -1,7 +1,29 @@
|
|
| 1 |
|
| 2 |
import { GoogleGenerativeAI } from "@google/generative-ai";
|
| 3 |
import { Node, Edge } from "reactflow";
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
export async function generateEmailTemplate(
|
| 7 |
businessType: string,
|
|
|
|
| 1 |
|
| 2 |
import { GoogleGenerativeAI } from "@google/generative-ai";
|
| 3 |
import { Node, Edge } from "reactflow";
|
| 4 |
+
import { auth } from "@/auth"; // Validate path is correct or adjust
|
| 5 |
+
import { db } from "@/db";
|
| 6 |
+
import { users } from "@/db/schema";
|
| 7 |
+
import { eq } from "drizzle-orm";
|
| 8 |
|
| 9 |
+
async function getEffectiveApiKey(providedKey?: string): Promise<string | undefined> {
|
| 10 |
+
if (providedKey) return providedKey;
|
| 11 |
+
if (process.env.GEMINI_API_KEY) return process.env.GEMINI_API_KEY;
|
| 12 |
+
|
| 13 |
+
try {
|
| 14 |
+
const session = await auth();
|
| 15 |
+
if (session?.user?.id) {
|
| 16 |
+
const user = await db.query.users.findFirst({
|
| 17 |
+
where: eq(users.id, session.user.id),
|
| 18 |
+
columns: { geminiApiKey: true }
|
| 19 |
+
});
|
| 20 |
+
if (user?.geminiApiKey) return user.geminiApiKey;
|
| 21 |
+
}
|
| 22 |
+
} catch (error) {
|
| 23 |
+
console.warn("Failed to fetch Gemini API key from DB:", error);
|
| 24 |
+
}
|
| 25 |
+
return undefined;
|
| 26 |
+
}
|
| 27 |
|
| 28 |
export async function generateEmailTemplate(
|
| 29 |
businessType: string,
|
lib/validate-env.ts
CHANGED
|
@@ -6,7 +6,6 @@ export function validateEnvironmentVariables() {
|
|
| 6 |
"NEXTAUTH_SECRET",
|
| 7 |
"GOOGLE_CLIENT_ID",
|
| 8 |
"GOOGLE_CLIENT_SECRET",
|
| 9 |
-
"GEMINI_API_KEY",
|
| 10 |
];
|
| 11 |
|
| 12 |
const missing = required.filter(v => !process.env[v]);
|
|
|
|
| 6 |
"NEXTAUTH_SECRET",
|
| 7 |
"GOOGLE_CLIENT_ID",
|
| 8 |
"GOOGLE_CLIENT_SECRET",
|
|
|
|
| 9 |
];
|
| 10 |
|
| 11 |
const missing = required.filter(v => !process.env[v]);
|