38980-vm/app-9w9pd00g5j41/PROVIDER_REGISTRATION_FIX.md
2026-03-04 18:25:09 +00:00

4.1 KiB
Raw Permalink Blame History

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

  1. Clerk Webhook: Kullanıcılar Clerk ile kayıt olduğunda otomatik olarak role='user' ile oluşturuluyordu
  2. Provider Kayıt Eksikliği: register_provider RPC fonksiyonu veritabanında mevcut ancak frontend'de bu fonksiyonu çağıran bir arayüz yoktu
  3. View Eksikliği: admin_provider_stats view'ında email kolonu 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_provider RPC 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:

  • ProviderRegistrationModal import edildi
  • isRegistrationModalOpen state eklendi
  • checkProviderAccess fonksiyonu 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
  • Modal component render edildi

3. ProviderInfo Sayfası Güncellendi

Dosya: /src/pages/ProviderInfo.tsx

Değişiklikler:

  • ProviderRegistrationModal import edildi
  • isRegistrationModalOpen state eklendi
  • handleRegisterClick fonksiyonu eklendi:
    • Giriş yapmamış kullanıcıları sign-up sayfasına yönlendirir
    • Giriş yapmış user rolündeki kullanıcılara kayıt modalını gösterir
    • Zaten provider olan 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.email kolonu eklendi
  • GROUP BY clause'a p.email eklendi
  • View comment güncellendi

Kullanım Akışı

Yeni Kullanıcı İçin:

  1. Kullanıcı /provider-info sayfasını ziyaret eder
  2. "Provider Olarak Kayıt Ol" butonuna tıklar
  3. Eğer giriş yapmamışsa → /sign-up sayfasına yönlendirilir
  4. Kayıt olduktan sonra tekrar /provider-info sayfasına gelir
  5. "Provider Olarak Kayıt Ol" butonuna tıklar
  6. Provider kayıt modalıılır
  7. İşletme bilgilerini doldurur ve gönderir
  8. Başarılı kayıt sonrası otomatik olarak /provider/dashboard sayfasına yönlendirilir

Mevcut Kullanıcı İçin:

  1. Kullanıcı giriş yapar (role='user')
  2. /provider/dashboard sayfasını ziyaret eder
  3. Otomatik olarak provider kayıt modalıılır
  4. İşletme bilgilerini doldurur ve gönderir
  5. Profil yenilenir (role='provider' olur)
  6. Dashboard yüklenir

Admin Panelinde:

  1. Admin /admin/providers-management sayfasını ziyaret eder
  2. Tüm provider'lar admin_provider_stats view'ından çekilir
  3. Provider bilgileri tam olarak gösterilir (email dahil)

Test Edilmesi Gerekenler

  1. Yeni kullanıcı kaydı ve provider olma akışı
  2. Mevcut kullanıcının provider olma akışı
  3. Provider kayıt formunun validasyonu
  4. Başarılı kayıt sonrası yönlendirme
  5. Admin panelinde provider listesi görünümü
  6. Provider dashboard erişimi
  7. 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