# Clerk JWT Fix - Hızlı Referans

## ✅ Uygulanan Değişiklikler

### 1. Migration 00093: Profiles INSERT Policy
```sql
CREATE POLICY "Allow profile creation with clerk_user_id"
  ON profiles FOR INSERT
  TO public
  WITH CHECK (
    clerk_user_id IS NOT NULL
    AND clerk_user_id <> ''
    AND email IS NOT NULL
  );
```

**Ne Yapar:**
- ✅ Anon role ile profil oluşturulabilir
- ✅ clerk_user_id ve email zorunlu
- ✅ Güvenlik korunur

### 2. Migration 00094: Profiles UPDATE Policy
```sql
CREATE POLICY "Allow profile update with email match"
  ON profiles FOR UPDATE
  TO public
  USING (
    email IS NOT NULL
    AND (clerk_user_id IS NULL OR clerk_user_id = '')
  )
  WITH CHECK (
    clerk_user_id IS NOT NULL
    AND clerk_user_id <> ''
  );
```

**Ne Yapar:**
- ✅ Email ile profil bulunup clerk_user_id bağlanabilir
- ✅ Sadece henüz bağlanmamış profiller güncellenebilir
- ✅ Güvenlik korunur

## 🎯 Sonuç

### Şimdi Çalışıyor
- ✅ Yeni kullanıcı kaydı
- ✅ Mevcut profil bağlama
- ✅ Clerk webhook
- ✅ useAuth hook

### Güvenlik
- ✅ clerk_user_id zorunlu
- ✅ email zorunlu
- ✅ Rastgele insert önlenir
- ✅ Sadece bağlanmamış profiller güncellenebilir

## 📌 Önerilen Adım

Clerk Dashboard'da **Supabase JWT Template** oluşturun:
1. [Clerk Dashboard](https://dashboard.clerk.com) → JWT Templates
2. Template adı: `supabase`
3. Signing key: Supabase JWT Secret
4. Lifetime: 3600

**Neden?**
- Daha güvenli
- authenticated role özellikleri
- Tüm RLS politikaları normal çalışır

## 📚 Detaylı Bilgi

Detaylı açıklama için: [CLERK_JWT_FIX.md](./CLERK_JWT_FIX.md)
