🚨 Gerçek Zamanlı Kontrol

Giriş/Çıkış Beklenmez - Anında Kısıtlama!

❌ SORUN: Kullanıcı Giriş/Çıkış Yapmayabilir

🎯 Gerçek Durum:

  • Kullanıcı 1 kere giriş yapar → 5 yıl çıkış yapmaz!
  • Token sürekli yenilenir (refresh token)
  • Uygulama açık kalır (mobil/desktop)
  • Session expire olmaz

📋 3 Kritik Senaryo:

Senaryo 1: Trial Bitişi

Gün 0: Kullanıcı kayıt oldu, giriş yaptı

Gün 1-7: Müzik dinliyor (trial aktif)

Gün 8: Trial bitti ama hiç çıkış yapmadı!

❌ Sorun: Kullanıcı hala sınırsız dinliyor!

⚠️ Ne kadar fazladan? Çıkış yapana kadar SONSUZ!

Senaryo 2: Premium Bitişi

1 Aralık: Aylık premium aldı (30 gün)

1-30 Aralık: Sınırsız dinliyor

31 Aralık: Premium bitti ama hiç çıkış yapmadı!

❌ Sorun: Ocak, Şubat, Mart... hala sınırsız dinliyor!

⚠️ Ne kadar fazladan? Uygulama kapanana kadar!

Senaryo 3: Device Limit Aşımı

Telefon: Oturum açık (5 aydır)

Tablet: Yeni giriş yaptı (device limit: 2)

❌ Sorun: İkisi de çalıyor! (Limit 2 ama 2 cihaz aktif)

⚠️ Problem: Telefon çıkış yapana kadar ikisi de aktif!

❌ Lazy Check'in Sınırları

❌ Lazy Check (Giriş/Çıkış Bekler)

Nasıl Çalışır:

isPremium() çağrısı sırasında kontrol yapılır. Ama kullanıcı giriş/çıkış yapmazsa çalışmaz!

❌ Sorun:

  • Kullanıcı giriş/çıkış yapana kadar çalışmaz
  • Token zaten verilmiş!
  • Token expire olana kadar devam eder

✅ Gerçek Zamanlı Kontrol (Gerekli!)

Nasıl Çalışır:

HER MÜZİK İSTEĞİNDE kontrol (stream endpoint'de fresh check)

✅ Avantaj:

  • Giriş/çıkış beklemez!
  • Subscription bittiği an → 30 saniye preview
  • Cache yok, her istekte fresh kontrol

✅ Çözüm: Request-Level Fresh Check

🎯 Ana Prensip

Her müzik stream isteğinde → Database'den fresh kontrol (cache kullanma!)

Kontrol Mantığı:

  • Subscription var mı?
  • Status = active veya trial mi?
  • current_period_end > şu an mı?
  • Eğer hayır → 30 saniye preview
  • Eğer evet → Sınırsız dinle