176 lines
4.4 KiB
Markdown
176 lines
4.4 KiB
Markdown
# 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
|