275 lines
6.8 KiB
Markdown
275 lines
6.8 KiB
Markdown
# 📋 Clerk Anahtarı Sorunu - Özet ve Çözüm
|
||
|
||
## 🔍 Sorun Analizi
|
||
|
||
Clerk API anahtarını Admin Settings sayfasından girdiniz, ancak uygulama hala "Kimlik Doğrulama Yapılandırılmamış" uyarısı gösteriyor.
|
||
|
||
### Tespit Edilen Sorunlar:
|
||
|
||
1. ✅ **Database Kontrol Edildi**
|
||
- `site_settings` tablosunda `clerk_publishable_key` kaydı YOK
|
||
- Bu, anahtarın database'e kaydedilmediğini gösteriyor
|
||
|
||
2. ✅ **.env Dosyası Kontrol Edildi**
|
||
- `VITE_CLERK_PUBLISHABLE_KEY=` satırı BOŞ
|
||
- Anahtar environment variable olarak tanımlanmamış
|
||
|
||
3. ✅ **RLS Politikaları Kontrol Edildi**
|
||
- Duplicate INSERT policy'leri vardı (temizlendi)
|
||
- UPDATE policy `is_admin()` kontrolü yapıyor
|
||
- Kullanıcınızın admin yetkisi olması gerekiyor
|
||
|
||
### Olası Nedenler:
|
||
|
||
1. **Admin yetkisi sorunu:** Kullanıcınız admin rolüne sahip olmayabilir
|
||
2. **Kaydetme hatası:** Settings sayfasında "Kaydet" butonuna tıklandı ama hata oluştu
|
||
3. **Sayfa yenilenmedi:** Anahtar kaydedildi ama sayfa düzgün yenilenmedi
|
||
4. **RLS policy bloğu:** Database politikaları INSERT/UPDATE işlemini engelledi
|
||
|
||
---
|
||
|
||
## ✅ ÇÖZÜM: .env Dosyasına Ekleme (ÖNERİLEN)
|
||
|
||
### Neden Bu Yöntem?
|
||
|
||
- ✅ **%100 Güvenilir** - Database veya RLS sorunlarından etkilenmez
|
||
- ✅ **Hızlı** - 3 dakikada çözülür
|
||
- ✅ **Development için ideal** - Test ederken kolay değiştirilebilir
|
||
- ✅ **Anında çalışır** - Server restart ile hemen aktif olur
|
||
|
||
### Adımlar:
|
||
|
||
#### 1. .env Dosyasını Açın
|
||
```
|
||
Dosya Yolu: /workspace/app-9w9pd00g5j41/.env
|
||
```
|
||
|
||
#### 2. 18. Satırı Bulun ve Düzenleyin
|
||
|
||
**ŞU AN:**
|
||
```bash
|
||
VITE_CLERK_PUBLISHABLE_KEY=
|
||
```
|
||
|
||
**OLACAK:**
|
||
```bash
|
||
VITE_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||
```
|
||
|
||
**⚠️ ÖNEMLİ:**
|
||
- `pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` yerine Clerk Dashboard'dan aldığınız gerçek anahtarı yazın
|
||
- Anahtarın başında veya sonunda boşluk olmamalı
|
||
- Tırnak işareti kullanmayın
|
||
|
||
#### 3. Dosyayı Kaydedin
|
||
```
|
||
Ctrl+S (Windows/Linux) veya Cmd+S (Mac)
|
||
```
|
||
|
||
#### 4. Development Server'ı Yeniden Başlatın
|
||
```bash
|
||
# Terminal'de:
|
||
# 1. Mevcut server'ı durdurun
|
||
Ctrl+C
|
||
|
||
# 2. Yeniden başlatın
|
||
npm run dev
|
||
```
|
||
|
||
#### 5. Tarayıcıyı Yenileyin
|
||
```
|
||
Ctrl+Shift+R (Windows/Linux)
|
||
Cmd+Shift+R (Mac)
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ Başarı Kontrolü
|
||
|
||
### Görsel Kontrol:
|
||
1. Ana sayfayı açın
|
||
2. "Giriş Yap" butonuna tıklayın
|
||
3. **Görmek istediğiniz:**
|
||
- ✅ Clerk login formu (email input, Continue butonu)
|
||
- ✅ "Kimlik Doğrulama Yapılandırılmamış" uyarısı KAYBOLDU
|
||
|
||
### Console Kontrol:
|
||
```
|
||
F12 > Console sekmesi
|
||
```
|
||
|
||
**Görmek istediğiniz:**
|
||
```
|
||
✅ Clerk key loaded from environment
|
||
```
|
||
veya
|
||
```
|
||
✅ Found Clerk key in site_settings
|
||
```
|
||
|
||
**Görmek istemediğiniz:**
|
||
```
|
||
❌ ⚠️ No Clerk Publishable Key found in database or environment.
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 Yapılan İyileştirmeler
|
||
|
||
### 1. Database RLS Politikaları Düzeltildi
|
||
```sql
|
||
-- Duplicate policy'ler temizlendi
|
||
-- Temiz, basit policy'ler oluşturuldu:
|
||
- Admins can insert site settings
|
||
- Admins can update site settings
|
||
- Admins can delete site settings
|
||
```
|
||
|
||
### 2. Dokümantasyon Oluşturuldu
|
||
- ✅ `CLERK_QUICK_FIX.md` - 3 dakikalık hızlı çözüm
|
||
- ✅ `CLERK_KEY_NOT_WORKING.md` - Detaylı sorun giderme
|
||
- ✅ `CLERK_SOLUTION_SUMMARY.md` - Bu dosya (özet)
|
||
|
||
---
|
||
|
||
## 🎯 Alternatif Çözüm: Database'e Manuel Ekleme
|
||
|
||
Eğer .env dosyasını kullanmak istemiyorsanız:
|
||
|
||
### Adım 1: Supabase SQL Editor
|
||
```
|
||
URL: https://supabase.com/dashboard/project/vtztatcglebrnvikvntf
|
||
Sol menü > SQL Editor
|
||
```
|
||
|
||
### Adım 2: SQL Komutunu Çalıştır
|
||
```sql
|
||
-- Clerk anahtarını ekle
|
||
INSERT INTO site_settings (key, value)
|
||
VALUES ('clerk_publishable_key', 'pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
|
||
ON CONFLICT (key)
|
||
DO UPDATE SET value = EXCLUDED.value, updated_at = NOW();
|
||
```
|
||
|
||
**⚠️ ÖNEMLİ:** `pk_test_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX` yerine gerçek anahtarınızı yazın!
|
||
|
||
### Adım 3: Uygulamayı Yenile
|
||
```
|
||
Tarayıcıda: Ctrl+Shift+R veya Cmd+Shift+R
|
||
```
|
||
|
||
---
|
||
|
||
## 🔑 Clerk Anahtarını Nereden Alacağım?
|
||
|
||
### Eğer Henüz Almadıysanız:
|
||
|
||
1. **Clerk Dashboard'a git:** https://dashboard.clerk.com/
|
||
2. **Sign In** veya **Sign Up** yap
|
||
3. **Uygulama oluştur:**
|
||
- Application name: `LetsGoCappadocia`
|
||
- Authentication: Email (mutlaka seçili olmalı)
|
||
4. **API Keys sayfasına git**
|
||
5. **Publishable Key'i kopyala** (pk_test_... ile başlar)
|
||
|
||
### Eğer Zaten Aldıysanız:
|
||
|
||
1. **Clerk Dashboard'a git:** https://dashboard.clerk.com/
|
||
2. **API Keys** sayfasına git
|
||
3. **Publishable Key** bölümünü bul
|
||
4. **Copy** butonuna tıkla
|
||
5. Anahtarı `.env` dosyasına yapıştır
|
||
|
||
---
|
||
|
||
## 🐛 Hala Çalışmıyor mu?
|
||
|
||
### Kontrol Listesi:
|
||
|
||
- [ ] Anahtar `pk_test_` veya `pk_live_` ile başlıyor
|
||
- [ ] Anahtarın başında/sonunda boşluk yok
|
||
- [ ] .env dosyası kaydedildi
|
||
- [ ] Development server yeniden başlatıldı
|
||
- [ ] Tarayıcı cache temizlendi (Ctrl+Shift+R)
|
||
- [ ] Console'da hata mesajı yok (F12 > Console)
|
||
|
||
### Ek Adımlar:
|
||
|
||
#### 1. Cache Temizleme
|
||
```bash
|
||
# Terminal'de:
|
||
rm -rf node_modules/.vite
|
||
npm run dev
|
||
```
|
||
|
||
#### 2. Browser Cache Temizleme
|
||
```
|
||
F12 > Application > Clear storage > Clear site data
|
||
```
|
||
|
||
#### 3. Anahtarın Geçerliliğini Test Et
|
||
```
|
||
1. Clerk Dashboard'a git
|
||
2. API Keys sayfasına git
|
||
3. Anahtarın aktif olduğunu kontrol et
|
||
4. Anahtarı yeniden kopyala
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 İlgili Dokümantasyon
|
||
|
||
### Hızlı Çözüm:
|
||
- **3 Dakikalık Fix:** [CLERK_QUICK_FIX.md](./CLERK_QUICK_FIX.md)
|
||
|
||
### Detaylı Rehberler:
|
||
- **Sorun Giderme:** [CLERK_KEY_NOT_WORKING.md](./CLERK_KEY_NOT_WORKING.md)
|
||
- **Kurulum Rehberi:** [CLERK_SETUP_GUIDE.md](./CLERK_SETUP_GUIDE.md)
|
||
- **Görsel Rehber:** [CLERK_VISUAL_GUIDE.md](./CLERK_VISUAL_GUIDE.md)
|
||
- **Hızlı Referans:** [CLERK_QUICK_REFERENCE.md](./CLERK_QUICK_REFERENCE.md)
|
||
|
||
### Tüm Rehberler:
|
||
- **Ana İndeks:** [CLERK_DOCUMENTATION_INDEX.md](./CLERK_DOCUMENTATION_INDEX.md)
|
||
|
||
---
|
||
|
||
## 💡 Öneriler
|
||
|
||
### Development İçin:
|
||
✅ **.env dosyası kullanın** (Çözüm 1)
|
||
- En hızlı ve güvenilir
|
||
- Test ederken kolay değiştirilebilir
|
||
- RLS sorunlarından etkilenmez
|
||
|
||
### Production İçin:
|
||
✅ **Database kullanın** (Çözüm 2)
|
||
- Dinamik güncelleme
|
||
- Admin panel'den yönetilebilir
|
||
- Birden fazla environment için uygun
|
||
|
||
---
|
||
|
||
## 📞 Destek
|
||
|
||
Eğer hala sorun yaşıyorsanız:
|
||
|
||
1. **Console loglarını kontrol edin** (F12 > Console)
|
||
2. **Network sekmesini kontrol edin** (F12 > Network)
|
||
3. **Supabase logs'u kontrol edin** (Supabase Dashboard > Logs)
|
||
4. **Hata mesajlarını not edin** ve ilgili dokümantasyona bakın
|
||
|
||
---
|
||
|
||
## ✅ Özet
|
||
|
||
**Sorun:** Clerk anahtarı Admin Settings'den kaydedilmedi
|
||
**Neden:** Database RLS politikaları veya admin yetki sorunu
|
||
**Çözüm:** .env dosyasına doğrudan ekleme (3 dakika)
|
||
**Sonuç:** Kimlik doğrulama sistemi aktif olacak
|
||
|
||
---
|
||
|
||
**Son Güncelleme:** 2026-02-26
|
||
**Versiyon:** 1.0
|
||
**Durum:** ✅ RLS Politikaları Düzeltildi
|