From e73ebc33449cbd05e5e68b018ba8b7f3c363a66a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20Kadir=20Ak=C4=B1n?= Date: Fri, 12 Dec 2025 04:13:56 +0300 Subject: [PATCH] chore(app): update Google Analytics ID in layout component --- .env.example | 4 +++- src/app/layout.tsx | 19 +++++++++++++++++++ src/lib/auth/index.ts | 27 +++++++++++++++++---------- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index 534caf68..e3fa83f1 100644 --- a/.env.example +++ b/.env.example @@ -23,4 +23,6 @@ NEXTAUTH_SECRET="your-super-secret-key-change-in-production" # GITHUB_CLIENT_SECRET=your_client_secret # AI Search (optional - enable aiSearch in prompts.config.ts) -# OPENAI_API_KEY=your_openai_api_key \ No newline at end of file +# OPENAI_API_KEY=your_openai_api_key + +GOOGLE_ANALYTICS_ID="G-XXXXXXXXX" \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 02f2917b..684dae34 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import type { Metadata } from "next"; +import Script from "next/script"; import { Inter, Noto_Sans_Arabic } from "next/font/google"; import { getMessages, getLocale } from "next-intl/server"; import { Providers } from "@/components/providers"; @@ -92,6 +93,24 @@ export default async function RootLayout({ return ( + + {process.env.GOOGLE_ANALYTICS_ID && ( + <> + + + )} +
diff --git a/src/lib/auth/index.ts b/src/lib/auth/index.ts index e52885ce..77d537c9 100644 --- a/src/lib/auth/index.ts +++ b/src/lib/auth/index.ts @@ -124,19 +124,26 @@ async function buildAuthConfig() { }, callbacks: { async jwt({ token, user, trigger }: { token: any; user?: any; trigger?: string }) { - // On sign in, add user data to token - if (user) { - token.id = user.id; - token.role = (user as User).role; - token.username = (user as User).username; - token.locale = (user as User).locale; + // On sign in, look up the actual database user by email to ensure correct ID + if (user && user.email) { + const dbUser = await db.user.findUnique({ + where: { email: user.email }, + select: { id: true, role: true, username: true, locale: true }, + }); + + if (dbUser) { + token.id = dbUser.id; + token.role = dbUser.role; + token.username = dbUser.username; + token.locale = dbUser.locale; + } } - // Always verify user exists in database - if (token.id) { + // On subsequent requests, verify user exists and refresh data + if (token.id && !user) { const dbUser = await db.user.findUnique({ where: { id: token.id as string }, - select: { role: true, username: true, locale: true }, + select: { id: true, role: true, username: true, locale: true }, }); // User no longer exists - invalidate token @@ -144,7 +151,7 @@ async function buildAuthConfig() { return null; } - // Update token with latest user data + // Update token with latest user data on explicit update or if data missing if (trigger === "update" || !token.username) { token.role = dbUser.role; token.username = dbUser.username;