Üyelik Sistemi - Final Plan
v8 - Basitleştirilmiş | 2025-11-23
Yapılacaklar
| RENAME |
5 tablo (shop_ prefix kaldırılacak) |
| GÜNCELLE |
users tablosuna 9 yeni kolon |
| MEVCUT |
sessions, activity_log, payments kullanılacak |
1. Tablo Rename
| Eski |
|
Yeni |
Kullanım |
| shop_subscription_plans |
→ |
subscription_plans |
Üyelik paketleri (Free, Premium, VIP) |
| shop_subscriptions |
→ |
subscriptions |
Kullanıcı abonelikleri |
| shop_coupons |
→ |
coupons |
Kuponlar |
| shop_coupon_usages |
→ |
coupon_usages |
Kupon kullanım kayıtları |
| shop_customer_addresses |
→ |
customer_addresses |
Fatura adresleri |
2. Mevcut Tablolar (Yeni Tablo Yok)
| Tablo |
Kullanım |
sessions |
Cihaz takibi ve limit kontrolü (user_id, ip_address, user_agent) |
activity_log |
Login kayıtları (Spatie - log_name='auth') |
payments |
Abonelik ödemeleri (polymorphic) |
payment_methods |
PayTR, Havale vb. |
3. Users Tablosu (9 Yeni Kolon)
| Kolon |
Tip |
Amaç |
device_limit |
integer nullable |
Kişiye özel limit (null=varsayılan 1) |
is_approved |
boolean |
Admin onayı (varsayılan true) |
failed_login_attempts |
integer |
Başarısız giriş sayısı |
locked_until |
timestamp |
Hesap kilitleme süresi |
two_factor_enabled |
boolean |
2FA aktif mi? |
two_factor_phone |
varchar |
SMS numarası |
is_corporate |
boolean |
Kurumsal hesap mı? |
corporate_code |
varchar unique |
Kurumsal davet kodu |
parent_user_id |
bigint FK |
Ana hesap (alt hesaplar için) |
4. Temel Akışlar
Abonelik Ödeme
Plan seç
→
customer_addresses'ten fatura adresi
→
PayTR ödeme
→
subscriptions kayıt
→
payments kayıt
Giriş + Cihaz Kontrolü
Email/şifre
→
activity_log kayıt
→
sessions sayısı kontrol
→
Limit aşıldıysa seçim
→
2FA (aktifse)
Cihaz limiti: Session::where('user_id', $id)->count()
Login Loglama (activity_log)
activity()
->causedBy($user)
->withProperties([
'ip' => $request->ip(),
'status' => 'success',
'browser' => $browser
])
->log('login');
5. Dosyalar
Modeller (app/Models/)
- SubscriptionPlan.php
- Subscription.php (implements Payable)
- Coupon.php, CouponUsage.php
- CustomerAddress.php
Servisler (app/Services/)
- SubscriptionService - Abonelik yönetimi, yenileme
- DeviceService - Session bazlı cihaz kontrolü
- CouponService - Kupon doğrulama/uygulama
- TwoFactorService - SMS gönderim/doğrulama
Middleware
- CheckDeviceLimit - Session sayısı kontrolü
- CheckSubscription - Abonelik durumu kontrolü
Mail Şablonları
- WelcomeMail - Hoş geldin
- TrialEndingMail - Deneme bitiyor
- SubscriptionRenewalMail - Yenileme hatırlatma
- PaymentSuccessMail / PaymentFailedMail
- NewDeviceLoginMail - Yeni cihaz uyarısı
- CorporateInviteMail - Kurumsal davet
Cron Jobs
- Deneme süresi kontrol (günlük)
- Yenileme hatırlatma (günlük)
- Otomatik ödeme işleme (günlük)
6. Draft Tasarımlar
Fiyatlandırma Sayfası
POPÜLER
Premium
299 TL
/ay
Yıllık
2.999 TL
/yıl
- 2 ay bedava
- Tüm özellikler
Cihaz Limiti Aşıldı
Cihaz limitinize ulaştınız. Bir oturumu sonlandırın:
Kurumsal Panel (Muzibu)
Aktif: 12 alt hesap
mehmet@acme.com
Aktif
ayse@acme.com
Aktif
Kod: ACME-2025
7. Tenant Ayarları
| Tenant |
Ücretli |
Kurumsal |
Fiyat |
| İxtif |
Hayır |
Hayır |
- |
| Muzibu |
Evet |
Evet |
299 / 2.999 TL |
8. Kesinleşen Kararlar
| Ödeme | PayTR |
| Session süresi | 1 yıl |
| Varsayılan cihaz limiti | 1 |
| Deneme süresi | Tenant ayarlanabilir |
| Kullanılmayan deneme | Üyeliğe eklenir |
| 2FA | SMS, isteğe bağlı |
| Login log | activity_log tablosu |
| Cihaz takibi | sessions tablosu |