Oturum Kapatma Nedenleri

Muzibu Session Management - Sistem Analizi

21 Aralik 2025 Muzibu.com.tr v1.0

📝 Basit Anlatim (Herkes Icin)

Oturum Ne Zaman Kapanir?

Kullanicinin oturumu sadece 3 durumda kapanir. Bunlarin disinda sistem kullaniciyi atmaz.

📱

Baska Cihaz Girisi

Kullanici yeni bir cihazdan giris yaparsa ve cihaz limiti asildiysa, en eski oturum kapanir.

👋

Manuel Cikis

Kullanici kendisi "Cikis Yap" butonuna tiklarsa oturumu kapanir.

Oturum Suresi Doldu

Kullanici uzun sure (ayarlanan dakika) hic islem yapmazsa Laravel session suresi dolar.

Oturum Ne Zaman Kapanmaz?

Muzik dinlerken (arka planda calsa bile) - Session polling aktif tutar
Sayfalarda gezinirken - Her istek session'i yeniler
Tarayici acik kaldigi surece - Polling devam eder
Inaktivite temizligi - KALDIRILDI, artik islem yapilmiyor

🔧 Teknik Detaylar (Gelistiriciler Icin)

✅ Aktif Oturum Kapatma Nedenleri

lifo

LIFO (Last In First Out)

Ne Zaman Tetiklenir?

Kullanici yeni cihazdan giris yaptiginda ve cihaz limiti asildiginda eski oturumlar silinir.

Dosya & Satir
Modules/Muzibu/app/Services/DeviceService.php:503-544
Akis
1. Kullanici login olur
2. registerSession() cagirilir
3. enforceDeviceLimit() kontrol eder
4. Limit asildiysa en eski session silinir
5. Cache'e "lifo" reason yazilir (5dk TTL)
Kullaniciya Gosterilen Mesaj

"Baska bir cihazdan giris yapildi."

manual_logout

Manuel Cikis

Ne Zaman Tetiklenir?

Kullanici "Cikis Yap" butonuna tikladiginda.

Dosya & Satir
Modules/Muzibu/app/Services/DeviceService.php:99-127 app/Http/Controllers/Auth/AuthenticatedSessionController.php:211-273
Akis
1. Kullanici logout butonuna tiklar
2. POST /logout istegi gonderilir
3. unregisterSession() cagirilir
4. Cache'e "manual_logout" yazilir
5. Session silinir, anasayfaya yonlendirilir
Yonlendirme

Anasayfaya (/) yonlendirilir - login sayfasina degil

session_expired

Session Suresi Doldu (Laravel Native)

Ne Zaman Tetiklenir?

Kullanici belirlenen sure boyunca hicbir islem yapmazsa Laravel'in kendi session mekanizmasi devreye girer.

Yapilandirma
config/session.php → lifetime Setting: auth_session_lifetime (Admin Panel)
Sure Nasil Hesaplanir?
• Her request'te session suresi sifirlanir
• Aktif kullanim = session hic dolmaz
• Inaktif sure asildiysa = session expired
• Polling varsa (muzik caliyor) = aktif sayilir
Mevcut Ayar
auth_session_lifetime = 120 dakika
Kullaniciya Gosterilen Mesaj

"Oturum suresi doldu. Lutfen tekrar giris yapin."

admin_terminated

Yonetici Tarafindan Sonlandirma

Ne Zaman Tetiklenir?

Admin panelden veya API uzerinden bir yonetici kullanicinin oturumunu sonlandirdiginda.

Dosya & Satir
Modules/Muzibu/app/Services/DeviceService.php:549-582
Akis
1. Admin terminateSession() cagirir
2. Cache'e "admin_terminated" yazilir
3. Session DB'den silinir
4. Kullanici sonraki polling'de logout edilir
Kullaniciya Gosterilen Mesaj

"Oturumunuz yonetici tarafindan sonlandirildi."

❌ Kaldirilan / Pasif Nedenler

inactivity_cleanup

Inaktivite Temizligi

KALDIRILDI

Eskiden belirli sure (4 saat) islem yapilmayan session'lar otomatik siliniyordu. Bu ozellik 21 Aralik 2025 tarihinde kaldirildi.

Neden Kaldirildi?

Kullanici deneyimini iyilestirmek icin. Artik oturum sadece LIFO, manuel cikis veya session expired durumlarinda kapanir.

🔄 Session Polling Sistemi

Nasil Calisiyor?

Frontend her 5 saniyede /api/auth/check-session cagirir
Backend session'in DB'de olup olmadigini kontrol eder
Session yoksa cache'den reason okunur ve mesaj gosterilir
Her basarili polling, Laravel session'i yeniler

Dosyalar

public/themes/muzibu/js/player/features/session.js app/Http/Controllers/Api/Auth/AuthController.php:checkSession()

Polling Araligi

5 saniye (Test modu)

📱 Cihaz Limiti Hiyerarsisi

Bir kullanicinin ayni anda kac cihazda oturum acabildigi 3 katmanli hiyerarsi ile belirlenir:

1

Kullanici Ozel Limiti

users.device_limit → Kullaniciya ozel ayar (en yuksek oncelik)

2

Abonelik Plani

subscription_plans.device_limit → Plan bazli limit

3

Tenant Varsayilan

setting('auth_device_limit') → Tum kullanicilar icin varsayilan (1)

Dosya

Modules/Muzibu/app/Services/DeviceService.php:getDeviceLimit()

📊 Ozet Tablo

Neden Durum Tetikleyen Yonlendirme
lifo ✅ Aktif Baska cihazdan giris /login?session_terminated=1
manual_logout ✅ Aktif Kullanici cikis yapti / (anasayfa)
session_expired ✅ Aktif Laravel session suresi doldu /login?session_expired=1
admin_terminated ✅ Aktif Yonetici sonlandirdi /login?session_terminated=1
inactivity_cleanup ❌ Pasif Uzun sure inaktivite -