diff --git a/src/lib/analitik-sunucu.ts b/src/lib/analitik-sunucu.ts index 0c10688..3e2b8cf 100644 --- a/src/lib/analitik-sunucu.ts +++ b/src/lib/analitik-sunucu.ts @@ -1,7 +1,7 @@ import "server-only"; /** * Rybbit'e sunucudan olay gönderimi (POST /api/track). Yalnızca sunucu - * tarafından çağrılır (lib/odeme.ts) — anahtar NEXT_PUBLIC_ değil. + * tarafından çağrılır (lib/odeme.ts, lib/auth.ts) — anahtar NEXT_PUBLIC_ değil. * * Neden sunucu tarafı: ödeme dönüşümü tarayıcıdan gönderilirse reklam * engelleyiciler ve iyzico dönüşünde kapatılan sekmeler yüzünden kaybolur. @@ -14,7 +14,7 @@ const HOST = process.env.RYBBIT_HOST; const SITE_ID = process.env.RYBBIT_SITE_ID; const API_KEY = process.env.RYBBIT_API_KEY; -export type SunucuOlayAdi = "odeme_tamamlandi"; +export type SunucuOlayAdi = "odeme_tamamlandi" | "giris_basarili"; export async function sunucuOlayi( ad: SunucuOlayAdi, diff --git a/src/lib/auth.ts b/src/lib/auth.ts index 1a1df6b..680a0eb 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -2,6 +2,7 @@ import "server-only"; import { betterAuth } from "better-auth"; import { drizzleAdapter } from "better-auth/adapters/drizzle"; import { magicLink } from "better-auth/plugins"; +import { sunucuOlayi } from "./analitik-sunucu"; import { appDb, schema } from "./appdb"; import { grantCredits, DENEME_KREDISI } from "./credits"; import { magicLinkEpostasi } from "./eposta"; @@ -157,6 +158,28 @@ export const auth = betterAuth({ }, }, }, + session: { + create: { + after: async (session, ctx) => { + // Huninin son adımı: oturum gerçekten açıldı. Sunucudan gider — + // reklam engelleyici ve kapanan sekme kaybettirmez. `await` YOK: + // Rybbit'in 3 sn'lik timeout'u girişi geciktirmesin (sunucuOlayi + // hata fırlatmaz). E-posta adresi özelliklere girmez. + const yol = ctx?.path ?? ""; + void sunucuOlayi("giris_basarili", { + kullaniciId: session.userId, + pathname: "/giris", + ozellikler: { + yontem: yol.startsWith("/magic-link") + ? "eposta" + : yol.startsWith("/callback") + ? "google" + : "diger", + }, + }); + }, + }, + }, }, });