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-politikasiimport { 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
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.