trkit
Menü

Rehberler

Çerez onayı

KVKK Çerez Uygulamaları Rehberi'ne uygun çerez banner'ı, script yükleme ve onay kaydı.

.mdChatGPT'de açClaude'da aç

Kurallar (özet)

KVKK'nın Çerez Uygulamaları Hakkında Rehberi'ne göre:

  • Zorunlu çerezler (oturum, sepet, güvenlik, tercih kaydı) için açık rıza gerekmez.
  • Analitik, pazarlama ve çoğu fonksiyonel çerez için açık rıza gerekir ve bu çerezler onaydan önce yerleştirilemez.
  • "Reddet" seçeneği "Kabul et" kadar kolay erişilebilir olmalıdır.
  • Kutular önceden işaretli olamaz.
  • Kullanıcı tercihini her zaman değiştirebilmelidir.

Kurulum

npx trkit add cerez-banner cerez-politikasi
app/layout.tsx
import { CookieConsentProvider } from "@/components/trkit/cerez-banner";

<body>
  <CookieConsentProvider policyHref="/cerez-politikasi">{children}</CookieConsentProvider>
</body>

Footer'a tercih bağlantısı ekleyin:

import { CookiePreferencesLink } from "@/components/trkit/cerez-banner";

<CookiePreferencesLink />

Script'leri onaya bağlamak

app/layout.tsx
import Script from "next/script";
import { ConsentGate } from "@/components/trkit/cerez-banner";

<CookieConsentProvider>
  {children}
  <ConsentGate category="analitik">
    <Script src="https://www.googletagmanager.com/gtag/js?id=G-XXXX" strategy="afterInteractive" />
    <Script id="ga" strategy="afterInteractive">
      {`window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag('js',new Date());gtag('config','G-XXXX');`}
    </Script>
  </ConsentGate>
  <ConsentGate category="pazarlama">
    {/* Meta Pixel, TikTok Pixel... */}
  </ConsentGate>
</CookieConsentProvider>

Bir bileşen içinde:

"use client";
import { useCookieConsent } from "@/components/trkit/cerez-banner";

const { allowed } = useCookieConsent();
if (allowed("analitik")) { /* ... */ }

Sunucu tarafında (ör. middleware/proxy veya server component):

import { cookies } from "next/headers";
import { parseCookieConsent, isAllowed, COOKIE_CONSENT_NAME } from "@trkit-app-pack/legal";

const state = parseCookieConsent((await cookies()).get(COOKIE_CONSENT_NAME)?.value, "1");
isAllowed(state, "pazarlama"); // false

Çerez listesini güncel tutun

Kullandığınız her çerezi trkit.config.ts'e ekleyin; çerez politikası sayfası bu listeden üretilir:

cerezler: [
  { ad: "trkit_consent", saglayici: "Birinci taraf", amac: "Çerez tercihlerinin saklanması", sure: "6 ay", kategori: "zorunlu" },
  { ad: "_ga, _ga_*", saglayici: "Google", amac: "Ziyaret istatistikleri", sure: "2 yıl", kategori: "analitik" },
  { ad: "_fbp", saglayici: "Meta", amac: "Reklam ölçümü", sure: "3 ay", kategori: "pazarlama" },
],

Üçüncü taraf çerezler genellikle yurt dışı aktarım içerir; trkit check bunu hatırlatır.

Politika değişince

cerez-banner.tsx içindeki CONSENT_VERSION değerini artırın. Eski sürümle onay vermiş kullanıcılara banner yeniden gösterilir.

Onay kayıtları

Banner her seçimde /api/consent uç noktasına kayıt gönderir. app/api/consent/route.ts içindeki kaydet() fonksiyonunu veritabanınıza bağlayın. IP adresi CONSENT_SALT ile tuzlanarak özetlenir, ham hâliyle saklanmaz.