Skip to content

Yerelde Subdomain/Tenant Geliştirme (8787)

Wrangler dev'de *.localhost academy (mağaza) testleri, Better Auth cookie davranışı ve host/subdomain çözümleme ipuçları.

Bu sayfa, Academy (Mağaza) / Tenant mimarisini lokalde test ederken en sık görülen problemleri çözer:

  • ahmethoca.localhost:8787/en açınca ana pazaryeri yerine mağaza beklerken “ana site” görme (academy çözümlenemiyor)
  • Subdomain host’unda login olunca başka host’a geçince tekrar login’e düşme (cookie host’a bağlı)

1) Login: doğru host üzerinde oturum açın

Section titled “1) Login: doğru host üzerinde oturum açın”

Lokal test için login’i hangi host’ta test edecekseniz o host’ta yapın:

  • http://ahmethoca.localhost:8787/en/login
  • http://localhost:8787/en/login (cookie localhost host’una yazılır; *.localhost ile paylaşılmayabilir)
Section titled “2) Better Auth: trusted origins + dev cookie stratejisi”

Dosya: app/lib/auth.ts

Lokal geliştirmede:

  • trustedOrigins *.localhost origin’lerini kabul etmelidir
  • crossSubDomainCookies her tarayıcıda .localhost için güvenilir değildir
    • Bu repo’da bu yüzden lokalde cross-subdomain cookie’ler kapalı tutulur
    • Prod’da (*.achidemy.net) cross-subdomain cookie’ler açılır

3) Academy (Mağaza) çözümleme mantığı: host → subdomain/custom domain

Section titled “3) Academy (Mağaza) çözümleme mantığı: host → subdomain/custom domain”

Dosya: app/lib/tenant.ts

getTenantByRequest(db, request) şu sırayla çalışır:

  • Ana domain / localhost ise null döner (ana pazaryeri).
  • Host .achidemy.net ile bitiyorsa subdomain yakalar (ahmethoca.achidemy.netahmethoca).
  • Host .localhost ile bitiyorsa lokal test için subdomain yakalar (ahmethoca.localhostahmethoca).
  • Diğer host’larda custom domain eşleşmesi dener (academies.customDomain).

Dosya: wrangler.toml

Lokal geliştirmede host’u 127.0.0.1 yapmak genelde daha deterministik sonuç verir:

[dev]
host = "127.0.0.1"
  • /api/auth/get-session 200 dönüyor mu?
  • Browser’da ahmethoca.localhost altında Better Auth session cookie’leri yazılıyor mu?
  • ahmethoca.localhost:8787/en açınca tenant çözülüyor mu?
    • academies.subdomain = "ahmethoca" kaydı var mı?
    • subscription_status = "active" mi?
    • app/lib/tenant.ts log’larında hata var mı?

Academy’yi yönetmek için eğitmen paneli kullanılır:

RouteAçıklama
/:lang/instructor/academyDashboard ve kurulum rehberi
/:lang/instructor/academy/settingsDomain, tema ve mod ayarları
/:lang/instructor/academy/studentsÖğrenci atama ve yönetimi
/:lang/instructor/academy/builderVitrin tasarımı (CMS)

Detaylı bilgi için Academy Modülü sayfasına bakın.