Üyelik Sistemi - Tam Yapı Haritası

Tarih: 2025-11-23 | Versiyon: 5 (Mevcut + Eklenecekler) | Tenant: Tüm Tenant'lar
MEVCUT Sistemde var
YENİ Eklenecek
DEĞİŞİKLİK Güncellenecek
MODÜL Yeni modül

Özet

3
Mevcut Tablo
6
Yeni Tablo
1
Güncellenecek Tablo
1
Yeni Modül

Veritabanı Tabloları

Mevcut Tablolar (Kullanılacak)

users DEĞİŞİKLİK

Mevcut kolonlar korunacak, üzerine yeni kolonlar eklenecek

id
name
email
phone
bio
is_active
last_login_at
email_verified_at
password
admin_locale
tenant_locale
dashboard_preferences
remember_token
created_at
updated_at
deleted_at
membership_type_id
device_limit
is_approved
failed_login_attempts
locked_until
two_factor_enabled
two_factor_phone
is_corporate
corporate_code
parent_user_id
sessions MEVCUT

Laravel session yönetimi - Değişiklik yok

id
user_id
ip_address
user_agent
payload
last_activity
password_reset_tokens MEVCUT

Şifre sıfırlama - Değişiklik yok

email
token
created_at
activity_log MEVCUT

Spatie Activity Log - Genel aktivite kaydı için kullanılabilir

id
log_name
description
subject_type
subject_id
causer_type
causer_id
event
properties
batch_uuid
created_at
updated_at

Yeni Tablolar

membership_types YENİ

Üyelik paketleri (Free, Premium, VIP vb.)

id
name
slug
monthly_price
yearly_price
trial_days
features (JSON)
is_default
is_active
created_at
updated_at
deleted_at
user_subscriptions YENİ

Kullanıcı abonelikleri ve ödeme geçmişi

id
user_id
membership_type_id
period (monthly/yearly)
price_paid
trial_ends_at
starts_at
ends_at
cancelled_at
payment_method
paytr_subscription_id
status
auto_renew
created_at
updated_at
user_devices YENİ

Kullanıcı cihaz takibi ve limit kontrolü

id
user_id
device_id (hash)
device_name
browser
platform
ip_address
last_activity
is_current
created_at
updated_at
login_logs YENİ

Detaylı giriş kayıtları (Spatie'den ayrı, özelleştirilmiş)

id
user_id
ip_address
user_agent
browser
platform
device_type
country
city
status (success/failed)
failure_reason
created_at
Not: shop_coupons tablosu mevcut ancak sadece Shop modülüne özel. Yeni universal Coupon modülü hem Shop hem de Subscription için çalışacak.

Yeni Modül: Coupon

MODÜL Modules/Coupon

Universal kupon sistemi. Hem Shop ürünlerinde hem de Subscription ödemelerinde kullanılabilir. Mevcut shop_coupons tablosu Shop'a özel kalacak, bu modül genel amaçlı olacak.

Modül Tabloları

coupons MODÜL
id
code
name
description
discount_type
discount_value
usage_area
usage_limit
usage_per_user
minimum_amount
starts_at
expires_at
is_active
metadata (JSON)
created_at
updated_at
deleted_at
usage_area seçenekleri:
  • all - Her yerde geçerli
  • subscription_only - Sadece abonelik
  • shop_only - Sadece mağaza
  • yearly_subscription - Sadece yıllık abonelik
  • first_purchase - Sadece ilk alışveriş
  • specific_category - Belirli kategori
coupon_usages MODÜL
id
coupon_id
user_id
usable_type (polymorphic)
usable_id
discount_amount
original_amount
final_amount
used_at
created_at

Modül Dosya Yapısı

Modules/Coupon/
├── app/
│ ├── Models/
│ │ ├── Coupon.php
│ │ └── CouponUsage.php
│ ├── Services/
│ │ └── CouponService.php
│ ├── Http/
│ │ ├── Controllers/
│ │ └── Livewire/Admin/
│ └── Repositories/
│ └── CouponRepository.php
├── database/
│ └── migrations/
│ └── tenant/
├── resources/views/
├── routes/
└── lang/

Dosya Yapısı

Mevcut Dosyalar (Değiştirilecek)

DEĞİŞİKLİK
app/Models/User.php
Yeni alanlar: membership_type_id, device_limit, is_corporate, parent_user_id vb.
Yeni ilişkiler: subscription(), devices(), loginLogs(), children() (kurumsal için)
DEĞİŞİKLİK
app/Http/Controllers/Auth/AuthenticatedSessionController.php
Cihaz kontrolü, 2FA doğrulama, login log kaydı eklenecek
DEĞİŞİKLİK
app/Http/Controllers/Auth/RegisteredUserController.php
Email doğrulama ayarı, varsayılan üyelik tipi atama, kurumsal kod kontrolü
DEĞİŞİKLİK
config/session.php
Lifetime: 525600 (1 yıl), tenant bazlı ayarlanabilir

Mevcut Dosyalar (Kullanılacak)

MEVCUT
app/Http/Controllers/Auth/*.php
9 adet Auth controller mevcut (Email verification, Password reset vb.)
MEVCUT
Modules/Payment/app/Services/PayTRDirectService.php
PayTR entegrasyonu mevcut - Recurring payment için genişletilecek
MEVCUT
Modules/SettingManagement/*
Setting grup ve değer sistemi - Yeni gruplar eklenecek

Yeni Dosyalar

YENİ
app/Models/MembershipType.php
Üyelik tipi modeli
YENİ
app/Models/UserSubscription.php
Kullanıcı abonelik modeli
YENİ
app/Models/UserDevice.php
Kullanıcı cihaz modeli
YENİ
app/Models/LoginLog.php
Giriş kaydı modeli
YENİ
app/Services/Auth/DeviceService.php
Cihaz yönetimi, limit kontrolü, fingerprint
YENİ
app/Services/Auth/TwoFactorService.php
2FA SMS gönderimi ve doğrulama
YENİ
app/Services/Auth/SubscriptionService.php
Abonelik yönetimi, deneme süresi, yenileme
YENİ
app/Services/Auth/CorporateService.php
Kurumsal üyelik, alt hesap yönetimi
YENİ
app/Http/Middleware/CheckDeviceLimit.php
Cihaz limiti kontrol middleware
YENİ
app/Http/Middleware/CheckSubscription.php
Abonelik durumu kontrol middleware

SettingManagement Grupları

Mevcut Yapı: settings_groups tablosu mevcut. Aşağıdaki gruplar yeni oluşturulacak ve JSON layout ile form alanları tanımlanacak.
auth_registration YENİ
registration_enabled email_verification_required admin_approval_required default_membership_type welcome_email_enabled
auth_session YENİ
session_lifetime remember_me_lifetime single_session_only logout_on_password_change
auth_security YENİ
max_login_attempts lockout_duration password_reset_expiry two_factor_enabled device_limit_default
sms YENİ
sms_provider sms_api_key sms_api_secret sms_sender_id
auth_subscription YENİ
paid_membership_enabled trial_days trial_add_to_subscription renewal_reminder_days auto_renew_default grace_period_days
corporate YENİ
corporate_enabled bulk_payment_enabled corporate_discount_percentage

Migration Listesi

Her migration hem central hem tenant klasörüne oluşturulacak.

// Central & Tenant
2025_11_23_001_create_membership_types_table.php
2025_11_23_002_create_user_subscriptions_table.php
2025_11_23_003_create_user_devices_table.php
2025_11_23_004_create_login_logs_table.php
2025_11_23_005_add_membership_fields_to_users_table.php

// Coupon Module (Modules/Coupon/database/migrations/tenant/)
2025_11_23_001_create_coupons_table.php
2025_11_23_002_create_coupon_usages_table.php

Mail Şablonları

YENİ WelcomeMail - Hoş geldin maili
YENİ TrialEndingMail - Deneme bitiyor uyarısı
YENİ SubscriptionRenewalMail - Yenileme hatırlatması
YENİ PaymentSuccessMail - Ödeme başarılı
YENİ PaymentFailedMail - Ödeme başarısız
YENİ NewDeviceLoginMail - Yeni cihaz girişi
YENİ TwoFactorCodeMail - 2FA kodu (SMS alternatifi)
YENİ CorporateInviteMail - Kurumsal davet

Zamanlanmış Görevler (Cron)

YENİ CheckTrialExpiry - Günlük, deneme süresi kontrol
YENİ SendRenewalReminders - Günlük, yenileme hatırlatması
YENİ ProcessRecurringPayments - Günlük, otomatik yenileme
YENİ CleanupExpiredSessions - Haftalık, eski session temizliği