4.1 KiB
4.1 KiB
Provider Kayıt Sorunu Çözümü
Sorun
Provider olarak üyelik yapıldı ancak admin sayfasında üyelik gözükmüyordu.
Kök Neden Analizi
- Clerk Webhook: Kullanıcılar Clerk ile kayıt olduğunda otomatik olarak
role='user'ile oluşturuluyordu - Provider Kayıt Eksikliği:
register_providerRPC fonksiyonu veritabanında mevcut ancak frontend'de bu fonksiyonu çağıran bir arayüz yoktu - View Eksikliği:
admin_provider_statsview'ındaemailkolonu eksikti, bu yüzden admin panelinde provider bilgileri tam gösterilmiyordu
Uygulanan Çözümler
1. ProviderRegistrationModal Component Oluşturuldu
Dosya: /src/components/provider/ProviderRegistrationModal.tsx
- İşletme adı, açıklama, destinasyonlar ve aktivite kategorileri için form
register_providerRPC fonksiyonunu çağırır- Başarılı kayıt sonrası profili yeniler ve provider dashboard'a yönlendirir
- Türkçe arayüz ve hata mesajları
2. ProviderDashboard Güncellendi
Dosya: /src/pages/ProviderDashboard.tsx
Değişiklikler:
ProviderRegistrationModalimport edildiisRegistrationModalOpenstate eklendicheckProviderAccessfonksiyonu güncellendi:- Eğer kullanıcı
role='user'ise kayıt modalını gösterir - Eğer kullanıcı
role='provider'ise normal dashboard'u yükler
- Eğer kullanıcı
- Modal component render edildi
3. ProviderInfo Sayfası Güncellendi
Dosya: /src/pages/ProviderInfo.tsx
Değişiklikler:
ProviderRegistrationModalimport edildiisRegistrationModalOpenstate eklendihandleRegisterClickfonksiyonu eklendi:- Giriş yapmamış kullanıcıları sign-up sayfasına yönlendirir
- Giriş yapmış
userrolündeki kullanıcılara kayıt modalını gösterir - Zaten
providerolan kullanıcıları dashboard'a yönlendirir
- Tüm "Provider Olarak Kayıt Ol" butonları güncellendi
- Modal component render edildi
4. admin_provider_stats View Düzeltildi
Migration: fix_admin_provider_stats_add_email
Değişiklikler:
- View'a
p.emailkolonu eklendi - GROUP BY clause'a
p.emaileklendi - View comment güncellendi
Kullanım Akışı
Yeni Kullanıcı İçin:
- Kullanıcı
/provider-infosayfasını ziyaret eder - "Provider Olarak Kayıt Ol" butonuna tıklar
- Eğer giriş yapmamışsa →
/sign-upsayfasına yönlendirilir - Kayıt olduktan sonra tekrar
/provider-infosayfasına gelir - "Provider Olarak Kayıt Ol" butonuna tıklar
- Provider kayıt modalı açılır
- İşletme bilgilerini doldurur ve gönderir
- Başarılı kayıt sonrası otomatik olarak
/provider/dashboardsayfasına yönlendirilir
Mevcut Kullanıcı İçin:
- Kullanıcı giriş yapar (role='user')
/provider/dashboardsayfasını ziyaret eder- Otomatik olarak provider kayıt modalı açılır
- İşletme bilgilerini doldurur ve gönderir
- Profil yenilenir (role='provider' olur)
- Dashboard yüklenir
Admin Panelinde:
- Admin
/admin/providers-managementsayfasını ziyaret eder - Tüm provider'lar
admin_provider_statsview'ından çekilir - Provider bilgileri tam olarak gösterilir (email dahil)
Test Edilmesi Gerekenler
- ✅ Yeni kullanıcı kaydı ve provider olma akışı
- ✅ Mevcut kullanıcının provider olma akışı
- ✅ Provider kayıt formunun validasyonu
- ✅ Başarılı kayıt sonrası yönlendirme
- ✅ Admin panelinde provider listesi görünümü
- ✅ Provider dashboard erişimi
- ✅ Email kolonunun admin panelinde görünmesi
Teknik Detaylar
RPC Fonksiyonu
register_provider(
p_user_id UUID,
p_business_name TEXT,
p_business_description TEXT,
p_destinations TEXT[],
p_activity_categories TEXT[]
)
View Yapısı
admin_provider_stats:
- id, email, username, full_name, role, is_active, created_at
- business_name, destinations, activity_categories
- credit_balance, purchased_leads_count, total_spend
Notlar
- Tüm hata mesajları Türkçe
- Form validasyonu client-side yapılıyor
- RPC fonksiyonu SECURITY DEFINER ile çalışıyor
- Provider kayıt sonrası otomatik wallet oluşturuluyor
- Destinasyon default olarak "Kapadokya" geliyor