Düzeltmeler + Güncel Plan

Muzibu Device Limit Sistemi - v3

Limit = 1 cihaz | Session ömrü ayarlı (auth_session_lifetime) | Tenant: 1001 (muzibu)

Kritik akış düzeltmeleri tamamlandı 22 Aralik 2025 v3 - durum + kalan adımlar

Basit Anlatim (Herkes Icin)

Limit=1 kuralı için ana hatalar düzeltildi: eski oturumlar doğru sayıda siliniyor, atılan cihaz artık stream yapamıyor, oturum süresi tek yerden yönetiliyor. Hâlâ kontrol edilmesi gereken tek şey ayarlardaki değerlerin (auth_device/auth_subscription/device_limit/session_lifetime) panelde doğru girilmiş olması.

  • • Stream isteği artık cihaz doğrulaması yapıyor; atılan tarayıcı 401 dönüyor.
  • • Eski oturumlar limit kadar siliniyor; gereksiz toplu silme yok.
  • • DB + Redis temizlik tek yerde toplandı; hayalet session riski azaltıldı.
  • • Session ömrü tüm katmanlarda aynı ayardan okunuyor.

Teknik Detaylar (Gelistiriciler Icin)

  • DeviceService::registerSession() LIFO silme artık sadece fazla oturum kadar yapıyor; cache reason lifo ile checkSession ile uyumlu.
  • SongStreamController::stream() login_token tabanlı sessionExists kontrolü aktif; logout + cookie flush ile 401 dönüyor.
  • • Ortak atomic helper ile DB + Redis temizliği tek noktaya toplandı; terminateSession/terminateSessions/unregisterSession/enforceDeviceLimit hepsi aynı yolu kullanıyor.
  • • Session lifetime: TenancyServiceProvider + DeviceService cookie default 525600 dk (auth_session_lifetime), cleanup komutu ile uyumlu.
  • • Legacy App/Services/Auth/DeviceService.php ve CheckDeviceLimit kaldırıldı; terminate-devices route API tarafına taşındı (web duplikasyonu silindi).

Durum Özeti

ÇözüldüAkış / Limit / Redis

  • Limit hesaplama sadece fazla oturum kadar siliyor (LIFO, en eski önce).
  • Kick reason lifo checkSession ile uyumlu; eski lifo_new_device da destekleniyor.
  • DB+Redis temizlik atomic helper ile birleşti; hayalet session riski azaltıldı.

ÇözüldüStream / Guard

  • SongStreamController stream() login_token ile sessionExists kontrolü yapıyor; kick edilen cihaz 401 alıyor.
  • Logout + cookie temizliği ile istemci akışı duruyor, mesaj döndürülüyor.

ÇözüldüTemizlik / Tutarlılık

  • Redis silme prefix uyumlu (prefix + raw fallback); unregister/terminate tek helper kullanıyor.
  • Session lifetime tüm katmanlarda auth_session_lifetime (default 525600 dk) ile aynı.
  • Legacy DeviceService + CheckDeviceLimit kaldırıldı; terminate-devices route duplikasyonu silindi.

KontrolAyarları Doğrulama

  • shouldRun() icin auth_device ve auth_subscription degerleri panelden dogrulanmali.
  • auth_device_limit ve auth_session_lifetime kayitlari UI’da dogru gorundugu test edilmeli.

Onceliklendirilmis Is Plani

0%

Test Plani (limit=1, cihaz=tarayici)

Riskler / Bagimliliklar

Ayar dogrulama

auth_device / auth_subscription / auth_device_limit / auth_session_lifetime degerleri panelden teyit edilmezse sistem bypass edilebilir.

Guard kombinasyonlari

Stream 401 mantigi web + sanctum guard karisiminda test edilmeli; farkli domain/cookie senaryolari sahaya yansitilmali.

Test kapsamı

Tarayıcı kombinasyonları (Chrome/Firefox/Mobil) ve uzun session süresi senaryoları çalıştırılmadan deploy edilmemeli.