# Clerk Kayıt Sorunu - Acil Çözüm ## Durum - **Email**: ozsahinmuhammet1@gmail.com - **Durum**: Clerk'te kayıt oldu ama database'de profil yok - **Sonuç**: Admin panelinde görünmüyor ## Kök Neden Clerk webhook yapılandırılmamış, bu yüzden: 1. Kullanıcı Clerk'te kayıt oldu ✅ 2. Webhook tetiklenmedi ❌ 3. Database'de profil oluşmadı ❌ 4. Kullanıcı henüz giriş yapmadı (client-side fallback çalışmadı) ❌ ## Hızlı Çözüm (2 Dakika) ### Adım 1: Kullanıcı Giriş Yapmalı 1. ozsahinmuhammet1@gmail.com ile **giriş yapın** (sign in) 2. Giriş yaptığınızda otomatik olarak profil oluşacak 3. Profil oluşunca provider kaydı yapabilirsiniz ### Adım 2: Provider Kaydı 1. Giriş yaptıktan sonra `/provider-info` sayfasına gidin 2. "Provider Olarak Kayıt Ol" butonuna tıklayın 3. İşletme bilgilerini doldurun 4. Kayıt tamamlandığında admin panelinde görüneceksiniz ## Kalıcı Çözüm: Webhook Yapılandırması ### Neden Webhook Gerekli? - Kullanıcılar kayıt olduğunda **anında** database'e eklenir - Giriş yapmadan önce profil oluşur - Admin panelinde hemen görünür ### Webhook Kurulum Adımları #### 1. Clerk Dashboard 1. [Clerk Dashboard](https://dashboard.clerk.com) → Webhooks 2. "Add Endpoint" butonuna tıklayın 3. **Endpoint URL**: ``` https://pkycoiknpdwzkarqelai.supabase.co/functions/v1/clerk-webhook ``` 4. **Events** seçin: - ✅ `user.created` - ✅ `user.updated` - ✅ `user.deleted` 5. "Create" butonuna tıklayın 6. **Signing Secret**'i kopyalayın (örn: `whsec_xxxxx`) #### 2. Supabase Secrets 1. [Supabase Dashboard](https://supabase.com/dashboard/project/pkycoiknpdwzkarqelai) 2. Settings → Edge Functions → Secrets 3. "Add Secret": - **Name**: `CLERK_WEBHOOK_SECRET` - **Value**: (Clerk'ten kopyaladığınız signing secret) 4. "Save" #### 3. Test 1. Clerk'te yeni bir test kullanıcısı oluşturun 2. Database'i kontrol edin: ```sql SELECT * FROM profiles ORDER BY created_at DESC LIMIT 5; ``` 3. Yeni profil görünmelidir ✅ ## Manuel Profil Oluşturma (Acil Durum) Eğer kullanıcı giriş yapamıyorsa veya hemen profil oluşturmak gerekiyorsa: ### SQL ile Manuel Oluşturma ```sql -- Admin olarak Supabase SQL Editor'de çalıştırın INSERT INTO profiles ( clerk_user_id, email, username, full_name, role, is_active, created_at, updated_at ) VALUES ( 'CLERK_USER_ID_BURAYA', -- Clerk'ten alınacak 'ozsahinmuhammet1@gmail.com', 'muhammet_ozsahin', 'Muhammet Özşahin', 'user', true, NOW(), NOW() ); ``` **NOT**: Clerk User ID'yi bulmak için: 1. [Clerk Dashboard](https://dashboard.clerk.com) → Users 2. ozsahinmuhammet1@gmail.com kullanıcısını bulun 3. User ID'yi kopyalayın (örn: `user_xxxxx`) ## Sorun Giderme ### Kontrol 1: Clerk Yapılandırması ```sql SELECT * FROM site_settings WHERE key = 'clerk_publishable_key'; ``` Sonuç: ✅ Yapılandırılmış ### Kontrol 2: Profil Var mı? ```sql SELECT * FROM profiles WHERE email = 'ozsahinmuhammet1@gmail.com'; ``` Sonuç: ❌ Yok (bu yüzden giriş yapmalı) ### Kontrol 3: Provider Kaydı Var mı? ```sql SELECT * FROM provider_services WHERE provider_id IN ( SELECT id FROM profiles WHERE email = 'ozsahinmuhammet1@gmail.com' ); ``` Sonuç: ❌ Profil olmadığı için provider kaydı da yok ## Beklenen Akış ### Webhook Olmadan (Mevcut Durum) ``` 1. Clerk'te kayıt ol ✅ ↓ 2. Email doğrulama (varsa) ↓ 3. GİRİŞ YAP ⚠️ (ZORUNLU) ↓ 4. useClerkAuthImplementation hook çalışır ↓ 5. Profil oluşturulur ✅ ↓ 6. Provider kaydı yap ↓ 7. Admin panelinde görün ✅ ``` ### Webhook ile (Önerilen) ``` 1. Clerk'te kayıt ol ✅ ↓ 2. Webhook tetiklenir ✅ ↓ 3. Profil oluşturulur ✅ ↓ 4. Giriş yap ↓ 5. Provider kaydı yap ↓ 6. Admin panelinde görün ✅ ``` ## Özet **Hemen Yapılması Gereken**: 1. ✅ ozsahinmuhammet1@gmail.com ile **giriş yapın** 2. ✅ Profil otomatik oluşacak 3. ✅ Provider kaydı yapın 4. ✅ Admin panelinde görüneceksiniz **Uzun Vadeli**: 1. ✅ Webhook yapılandırın (yukarıdaki adımları takip edin) 2. ✅ Gelecekteki kullanıcılar otomatik olarak database'e eklenecek ## Yardım Eğer hala sorun yaşıyorsanız: 1. Browser console'u açın (F12) 2. Giriş yapmayı deneyin 3. Hata mesajlarını kontrol edin 4. `/admin/clerk-diagnostics` sayfasını ziyaret edin 5. Detaylı durum bilgisi görün