Tenant-Aware Uyelik Sistemi

Tarih: 2025-11-23 | Tenant: ixtif.com (Tenant 2) | Talep: Kapsamli uyelik sistemi analizi, ayar sistemi tasarimi ve mail planlamasi

1. Mevcut Durum Analizi

Kimlik Dogrulama Sistemi (Authentication)

Sistem su anda Laravel Breeze tabanli bir kimlik dogrulama kullaniyor. Kullanici girisi yapildiginda session (oturum verisi) veritabaninda sakliyor. Oturum suresi varsayilan olarak 120 dakika (2 saat).

Mevcut Ozellikler:

  • Giris/cikis aktivite loglari (kayit altina alma)
  • Son giris zamani takibi
  • Sepet birlestirme (misafirden uyeye)
  • Coklu dil destegi (admin ve site icin ayri)
  • Spatie rolleri ile yetkilendirme

Kullanici Modeli

Mevcut User modeli temel bilgileri saklıyor: isim, email, sifre, telefon, bio, aktiflik durumu. Ayrica Spatie Roles (rol tabanli yetkilendirme) ve MediaLibrary (medya dosyalari yonetimi) kullaniliyor.

SettingManagement Modulu

Sistemde zaten Form Builder (gorsel form olusturucu) altyapisi mevcut. Bu altyapi ile tenant bazli ayarlar kolayca olusturulabilir. Ayarlar JSON layout (yapilandirilmis veri formati) olarak saklanip, form elemanlari dinamik olarak render ediliyor.

Mevcut Element Turleri: switch (anahtar), select (acilir liste), text (metin), textarea (cok satirli metin), number (sayi), checkbox (onay kutusu), radio (tekli secim)

Dikkat: Ayarlar central veritabaninda (settings, settings_groups tablolari), degerler ise tenant veritabaninda (settings_values tablosu) saklanir. Bu sayede her tenant kendi ayar degerlerini bagimsiz olarak yonetebilir.

2. Tenant-Aware Ayar Sistemi Tasarimi

Asagida onerilen ayarlar, SettingManagement modulunun Form Builder ozelligi kullanilarak olusturulacak. Her tenant bu ayarlari kendi admin panelinden yonetebilecek.

2.1. Kayit Ayarlari Grubu

Ayar Adi Aciklama Tur Varsayilan
Uyelik Sistemi Aktif Site uyelik sistemini acip kapatir switch Aktif
Yeni Kayit Izni Yeni kullanicilarin kayit olmasina izin ver switch Aktif
Email Dogrulama Gerekli Kayit sonrasi email dogrulama zorunlu mu? switch Evet
Admin Onayi Gerekli Yeni uyeler admin onayi beklesin mi? switch Hayir
Varsayilan Uyelik Tipi Yeni uyelerin otomatik atanacagi uyelik tipi select Ucretsiz
Kayit Formu Alanlari Kayit formunda hangi alanlar gorunecek select Ad, Email, Sifre
Hos Geldiniz Maili Kayit sonrasi hos geldiniz maili gonder switch Evet

2.2. Oturum Ayarlari Grubu

Ayar Adi Aciklama Tur Varsayilan
Oturum Suresi Kullanicinin otomatik cikis yapacagi sure select 2 saat
Beni Hatirla Suresi "Beni hatirla" seceneginin gecerlilik suresi select 30 gun
Tarayici Kapaninca Cikis Tarayici kapandiginda oturum sonlansin mi? switch Hayir
Giris Loglarini Kaydet Kullanici girislerini veritabanina kaydet switch Evet
Basarisiz Giris Limiti Hesap kilitlenmeden once izin verilen deneme number 5
Hesap Kilit Suresi Cok fazla basarisiz denemede kilit suresi (dakika) number 15

2.3. Cihaz & Guvenlik Ayarlari Grubu

Ayar Adi Aciklama Tur Varsayilan
Cihaz Limiti Modu Ayni anda kac cihazdan giris yapilabildigi select Sinirsiz
Varsayilan Cihaz Limiti Uyelik tipine gore degismezse varsayilan limit number 3
Yeni Cihaz Bildirimi Yeni bir cihazdan giris yapilinca mail gonder switch Evet
IP Adresi Kaydet Giris yapilan IP adreslerini logla switch Evet
Iki Faktorlu Dogrulama 2FA destegini aktif et switch Pasif
Supheli Aktivite Bildirimi Supheli girisler icin admin'e mail at switch Evet
Cihaz Limiti Modu Secenekleri:
  • Sinirsiz: Istenen kadar cihazdan giris
  • Sabit Limit: Tum kullanicilar icin ayni limit (varsayilan cihaz limiti kullanilir)
  • Uyelik Tipine Gore: Her uyelik tipi kendi limitine sahip
  • Kullaniciya Ozel: Admin her kullanici icin ayri limit belirler

3. Uyelik Tipleri & Abonelik Sistemi

Uyelik Tipleri Yonetimi Yuksek Oncelik

Her tenant kendi uyelik tiplerini tanimlayabilir. Muzisyenler icin "Pro Uye", forklift satisi icin "Bayi Uyeligi" gibi sektore ozel tipler olusturulabilir.

Her Uyelik Tipi Icin Tanimlanacak Ozellikler:
Temel Bilgiler

Ad, aciklama, ikon, renk, siralama, aktiflik durumu

Fiyatlandirma

Aylik fiyat, yillik fiyat, deneme suresi, indirim orani

Kisitlamalar

Cihaz limiti, indirme limiti, icerik erisimi, API kullanimi

Ozellikler

JSON formatinda ozel ozellikler (her tenant farkli kullanabilir)

Ornek Uyelik Tipleri

Muzibu.com (Muzik Platformu) Icin:
Uyelik Fiyat Cihaz Ozellikler
Ucretsiz 0 TL 1 Reklam destekli, dusuk kalite
Premium 29.99 TL/ay 3 Reklamsiz, yuksek kalite, offline dinleme
Aile 49.99 TL/ay 6 6 kullanici, bireysel profiller
Ixtif.com (B2B) Icin:
Uyelik Fiyat Cihaz Ozellikler
Standart Ucretsiz Sinirsiz Urun goruntuleme, teklif isteme
Bayi Ozel Sinirsiz Bayi fiyatlari, toplu satis, API erisimi
VIP Ozel Sinirsiz Oncelikli destek, ozel indirimler

3.1. Abonelik Ayarlari Grubu

Ayar Adi Aciklama Tur
Abonelik Sistemi Aktif Ucretli uyelik sistemi acik mi? switch
Odeme Yontemi Hangi odeme sistemleri aktif select
Deneme Suresi (Gun) Premium uyelik deneme suresi number
Otomatik Yenileme Abonelikler otomatik yenilensin mi? switch
Iptal Oncesi Uyari (Gun) Abonelik bitmeden kac gun once uyari gonder number
Geri Odeme Politikasi Iptal durumunda iade yapilsin mi select

4. Cihaz Yonetimi & Oturum Kontrolu

Cihaz Takip Sistemi Orta Oncelik

Her giris yapan cihaz icin benzersiz bir device fingerprint (cihaz parmak izi) olusturulacak. Bu sayede kullanicinin hangi cihazlardan giris yaptigini takip edip, gerektiginde belirli cihazlari engelleyebiliriz.

Takip Edilecek Bilgiler:

  • Cihaz adi (tarayici + isletim sistemi)
  • IP adresi ve konum (ulke/sehir)
  • Son aktivite zamani
  • Guvenilir cihaz olarak isaretleme
  • Cihazi engelleme/cikarma

Esanli Oturum Kontrolu

Kullanici cihaz limitini asarsa, eski oturumlari otomatik olarak kapatilabilir veya yeni girise izin verilmeyebilir. Bu davranis ayarlarla kontrol edilecek:

Ilk Giren Kalir

Limit doluysa yeni girise izin verilmez, kullanici baska cihazdan cikis yapmali

Son Giren Kalir

Yeni giris en eski oturumu otomatik kapatir

Kullanici Secer

Limit asiminda kullaniciya hangi cihazi cikaracagini sor

Giris Loglari

Eger ayarlardan aktif edilirse, her giris denemesi (basarili/basarisiz) kayit altina alinir. Bu loglar guvenlik analizi, supheli aktivite tespiti ve kullanici destegi icin kullanilir.

Log Icerigi:

  • Kullanici ID ve email
  • Giris zamani
  • IP adresi
  • User agent (tarayici/cihaz bilgisi)
  • Basari durumu
  • Basarisizlik nedeni (sifre hatali, hesap kilitli, vb.)

5. Mail Sablonlari Planlamasi

Uyelik sistemi icin gerekli tum mail sablonlari asagida listelenistir. Her tenant kendi mail iceriklerini ve gorsellerini ozellestirebilir.

5.1. Kayit & Dogrulama Mailleri

Hos Geldiniz Maili

Tetikleme: Basarili kayit sonrasi

Icerik: Merhaba mesaji, site tanitimi, ilk adimlar, destek bilgileri

Degiskenler: {user_name}, {site_name}, {login_url}, {support_email}

Email Dogrulama

Tetikleme: Kayit sonrasi (ayar aktifse)

Icerik: Dogrulama linki, gecerlilik suresi, tekrar gonderme secenegi

Degiskenler: {user_name}, {verification_url}, {expiry_time}

Hesap Onaylandi

Tetikleme: Admin onayi sonrasi (ayar aktifse)

Icerik: Onay bildirimi, giris linki, kullanim kilavuzu

Degiskenler: {user_name}, {login_url}

5.2. Guvenlik Mailleri

Sifre Sifirlama

Tetikleme: Sifre sifirlama talebi

Icerik: Sifirlama linki, gecerlilik suresi, guvenlik uyarisi

Degiskenler: {user_name}, {reset_url}, {expiry_time}, {ip_address}

Yeni Cihaz Bildirimi

Tetikleme: Yeni bir cihazdan giris (ayar aktifse)

Icerik: Cihaz bilgileri, konum, "ben degilim" aksiyonu

Degiskenler: {user_name}, {device_name}, {ip_address}, {location}, {time}, {secure_url}

Supheli Giris Denemesi

Tetikleme: Cok fazla basarisiz giris denemesi

Icerik: Uyari mesaji, hesap kilitleme durumu, sifre degistirme onerisi

Degiskenler: {user_name}, {attempt_count}, {ip_address}, {lock_duration}

Sifre Degistirildi

Tetikleme: Sifre basariyla degistirildiginde

Icerik: Bilgilendirme, "ben degistirmedim" aksiyonu

Degiskenler: {user_name}, {time}, {ip_address}, {secure_url}

5.3. Abonelik Mailleri

Abonelik Baslatildi

Tetikleme: Ucretli uyelik satinalindiginda

Icerik: Plan detaylari, fatura bilgileri, ozellikler listesi

Degiskenler: {user_name}, {plan_name}, {price}, {next_billing_date}, {features}

Abonelik Yenileme Hatirlatmasi

Tetikleme: Abonelik bitmeden X gun once (ayarlanabilir)

Icerik: Yenileme tarihi, fiyat, iptal/degistirme secenekleri

Degiskenler: {user_name}, {plan_name}, {renewal_date}, {price}, {manage_url}

Odeme Basarisiz

Tetikleme: Otomatik yenileme basarisiz

Icerik: Hata nedeni, odeme yontemi guncelleme, son tarih

Degiskenler: {user_name}, {plan_name}, {failure_reason}, {retry_date}, {update_payment_url}

Abonelik Iptal Edildi

Tetikleme: Kullanici iptali veya odeme basarisizligi

Icerik: Iptal onay, erisim bitis tarihi, geri donus teklifi

Degiskenler: {user_name}, {plan_name}, {access_end_date}, {resubscribe_url}

Plan Yuseltiidi/Dusuruidu

Tetikleme: Plan degisikligi

Icerik: Yeni plan detaylari, fiyat farki, ozellik degisiklikleri

Degiskenler: {user_name}, {old_plan}, {new_plan}, {price_change}, {effective_date}

5.4. Admin Bildirimleri

Yeni Uye Bildirimi (Admin)

Tetikleme: Yeni kullanici kaydi

Icerik: Kullanici bilgileri, onay linki (gerekiyorsa)

Degiskenler: {admin_name}, {user_name}, {user_email}, {registration_date}, {approve_url}

Supheli Aktivite Raporu (Admin)

Tetikleme: Gunluk/haftalik supheli aktivite ozeti

Icerik: Basarisiz giris sayilari, kilitlenmis hesaplar, yeni cihazlar

Degiskenler: {period}, {failed_logins}, {locked_accounts}, {suspicious_ips}

6. Veritabani Degisiklikleri

Yeni Tablolar Yuksek Oncelik

membership_types (Uyelik Tipleri)

Her tenant'in uyelik tiplerini tanimladigi tablo. Ad, fiyat, ozellikler, kisitlamalar, aktiflik durumu.

user_subscriptions (Kullanici Abonelikleri)

Kullanicilarin aktif/gecmis aboneliklerini takip eden tablo. Baslangic/bitis tarihi, durum, odeme bilgileri.

user_devices (Kullanici Cihazlari)

Kullanicinin giris yaptigi cihazlari takip eden tablo. Cihaz adi, parmak izi, IP, son aktivite, guvenilir mi.

login_logs (Giris Loglari)

Tum giris denemelerinin kaydedildigi tablo. Kullanici, zaman, IP, cihaz, basari durumu, basarisizlik nedeni.

Mevcut Tablo Guncellemeleri

users tablosuna eklenecek alanlar:
  • membership_type_id: Kullanicinin uyelik tipi
  • is_approved: Admin onayi durumu
  • approved_at: Onay zamani
  • approved_by: Onaylayan admin
  • device_limit: Kullaniciya ozel cihaz limiti (null = varsayilan)
  • failed_login_attempts: Basarisiz giris sayaci
  • locked_until: Hesap kilit suresi
Onemli: Tum yeni tablolar hem central hem de tenant migration'larina eklenmelidir. Uyelik tipleri (membership_types) tenant DB'de saklanacak cunku her tenant farkli tipler tanimlayabilir.

7. Alternatif Yaklasimlar

Oturum Yonetimi Alternatifleri

Session Tabani (Mevcut)

Avantaj: Basit, Laravel varsayilani
Dezavantaj: Cihaz bazli kontrol zor

JWT Token Tabani

Avantaj: API dostu, cihaz kontrolu kolay
Dezavantaj: Karmasik, token yonetimi

Hibrit Yaklasim

Avantaj: Web icin session, API icin token
Dezavantaj: Iki sistem bakimi

Abonelik Sistemi Alternatifleri

Yerel Sistem (Onerilen)

Avantaj: Tam kontrol, komisyon yok
Dezavantaj: Gelistirme suresi

Laravel Cashier + Stripe

Avantaj: Hazir cozum, guvenli odeme
Dezavantaj: Komisyon, Turkiye destegi

Iyzico Entegrasyonu

Avantaj: Turkiye odakli, yerel kartlar
Dezavantaj: Ozel gelistirme gerekli

Cihaz Tespiti Alternatifleri

User Agent + IP

Avantaj: Basit, hizli
Dezavantaj: Kolayca bypass edilebilir

Browser Fingerprint

Avantaj: Daha guvenilir tespit
Dezavantaj: Gizlilik endişeleri

Cihaz Bagli Token

Avantaj: En guvenilir
Dezavantaj: Karmasik uygulama

Onerim: Ilk asamada Session tabani + User Agent/IP ile baslamak ve gerektiginde browser fingerprint eklemek en makul yol. Abonelik icin yerel sistem gelistirip, odeme icin Iyzico entegrasyonu yapmak Turkiye pazari icin ideal.