Analiz + Is Plani + TODO

Muzibu Device Limit Sistemi - Sorun Devam

Limit = 1 cihaz | Session hedefi = uzun omur (auth_session_lifetime) | Tenant: 1001 (muzibu)

Kritik akisa devam eden bosluklar var 21 Aralik 2025 v2 - plan/todo guncellendi

Basit Anlatim (Herkes Icin)

Cihaz limiti hala hatali calisiyor: atilmasi gereken cihazlar muzik stream edebiliyor, bazen eski oturumlar temizlenmiyor. Ama amac net: kullanici ayni anda sadece 1 tarayici acik tutabilsin, digerleri otomatik kapansin ve bunun nedeni dogru mesajla bildirilsin.

  • • Stream API cihaz kontrolu kapali, bu yuzden atilan cihaz hala dinleyebiliyor.
  • • Oturum silerken Redis kayitlari kalabiliyor, "hayalet" session riski var.
  • • Session suresi ve limit davranisi farkli dosyalarda farkli degerler kullaniyor.

Teknik Detaylar (Gelistiriciler Icin)

  • Modules/Muzibu/app/Services/DeviceService.php registerSession() limit >= mantigi limit>1 icin tum oturumlari siliyor; cache reason lifo_new_device checkSession tarafindan okunmuyor.
  • SongStreamController.php cihaz kontrolu yorum satirinda (guard/session mismatch nedeniyle), bu yuzden kick edilen tarayici stream yapabiliyor.
  • • Redis temizligi tutarsiz: terminateSession / terminateSessions prefixsiz key siliyor, unregisterSession da Redis temizlemiyor.
  • • Session lifetime kaynaklari farkli: TenancyServiceProvider (120 dk), DeviceService cookie (10080 dk), CleanupExpiredSessionsCommand (525600 dk) -> uyumsuz.
  • App/Services/Auth/DeviceService.php ve CheckDeviceLimit eski kod olarak duruyor; terminate-device route hem web hem api'de tanimli.

Bugun Tespit Edilen Aciklar

AcilAkis / Limit

  • Limit hesaplama >= kullanimi yuzunden limit 2-3 olsa bile tum eski oturumlar siliniyor; sadece fazla olanlar silinmeli.
  • Kick nedeni lifo_new_device cache key'i checkSession tarafinda okunmuyor; kullaniciya yanlis mesaj donuyor.
  • SessionExists fallback, cookie yoksa herhangi bir kaydi dogru sayiyor; yanlis cihaz bazen ayakta kalabilir.

AcilStream / Guard

  • Stream API cihaz kontrolu yorum satirinda; atilan tarayici muzik calabiliyor (SongStreamController::stream).
  • Guard/session mismatch yuzunden stream request'i dogru session id'yi goremiyor; login_token tabanli kontrol hazirlanmali.

Kisa VadeTemizlik / Tutarlilik

  • Redis key silme prefixsiz (terminateSessions) veya hic yok (terminateSession, unregisterSession); hayalet session riski.
  • Session lifetime degerleri uyumsuz: 120 dk (TenancyServiceProvider), 10080 dk (DeviceService cookie), 525600 dk (cleanup command).
  • Legacy class ve duplicate routes kafa karistiriyor: App\\Services\\Auth\\DeviceService, CheckDeviceLimit middleware, web + api terminate-devices route.

KontrolAyarlari Dogrulama

  • shouldRun() icin auth_device ve auth_subscription zorunlu; tenant 1001 degerleri teyit edilmeli.
  • auth_device_limit ve auth_session_lifetime setting girisi panelde dogru kaydedilmis mi kontrol edilmeli.

Onceliklendirilmis Is Plani

0%

Test Plani (limit=1, cihaz=tarayici)

Riskler / Bagimliliklar

Guard karma

Stream API hem web hem sanctum guard kullanmaya devam ederse session_id tespiti karisiyor; login_token bazli kontrol zorunlu.

Redis temizligi

Prefixsiz silme sonucu eski session key'leri kalirsa kullanici cikis oldugunu gormeden devam edebilir.

Setting tutarsizligi

auth_device / auth_subscription false ise tum akisi bypass eder; paneldeki degerler kontrol edilmeden testler yaniltici olur.