YANLIŞ BİLGİ DÜZELTİLDİ!
❌ ESKİ (YANLIŞ):
- • "Central database - users, roles, permissions (tüm tenant'lar için ortak)"
- • "Tenant database'e user bilgisi yazma!"
- • "User::all() → Central database'den çeker"
✅ YENİ (DOĞRU):
- • Her tenant'ın KENDI users, roles, permissions tabloları var!
- • Central DB sadece tenant yönetimi ve sistem admin'leri için
- • User::all() → Tenant context'te TENANT DB'den çeker!
Basit Anlatım (Herkes İçin)
Ne oldu?
CLAUDE.md dosyasında yanlış bilgi vardı. "Kullanıcılar (users) central database'de" diye yazıyordu.
Bu YANLIŞ! Her tenant'ın (muzibu.com, ixtif.com gibi sitelerin) kendi kullanıcı tablosu var.
Gerçek Mimari:
- ✓ Tenant yönetimi (tenants, domains)
- ✓ Abonelik sistemi (subscriptions)
- ✓ Sistem admin'leri (19 kullanıcı)
- ✓ AI modülü (merkezi)
- ✓ Kendi kullanıcıları (21 kullanıcı)
- ✓ Kendi roles, permissions
- ✓ Müzik platformu (songs, albums...)
- ✓ Sayfalar, bloglar, ayarlar
Neden önemli?
Her site tamamen bağımsız çalışıyor. Muzibu'nun kullanıcıları İxtif'i görmüyor, İxtif'in kullanıcıları
Muzibu'yu görmüyor. Tıpkı her apartmanın kendi kapısı, kendi kiracıları olması gibi.
Sonuç:
User model'e "primary_sector_id" field'ı ekleyeceğimizde, bunu TENANT DB'ye ekleyeceğiz. Central DB'ye değil! Migration dosyası SADECE "database/migrations/tenant/" klasöründe olacak.
Teknik Detaylar
Multi-Tenancy Pattern: Database Per Tenant
Sistem "Database Per Tenant" pattern kullanıyor. Her tenant tamamen izole edilmiş kendi database'inde çalışır.
Central Database (tuufi_4ekim)
- • tenants
- • domains
- • module_tenants
- • subscriptions
- • ai_credit_packages
- • ai_credit_transactions
- • users (19 sistem admin)
- • roles
- • permissions
- • ai_features
- • ai_prompts
- • ai_conversations
Tenant Database (tenant_muzibu_1528d0)
- • users (21 Muzibu kullanıcısı)
- • roles
- • permissions
- • model_has_roles
- • model_has_permissions
- • pages
- • blogs
- • media
- • seo_settings
- • shop_products
- • shop_categories
- • shop_brands
- • shop_settings
- • muzibu_songs
- • muzibu_albums
- • muzibu_artists
- • muzibu_playlists
- • muzibu_genres
- • muzibu_sectors
Laravel Model Connection
User model'de connection tanımı YOK. Tenant context'te otomatik olarak tenant database kullanılır.
class User extends Authenticatable
{
// Connection tanımı YOK!
// Tenant context'te → tenant_muzibu_1528d0.users
// Central context'te → tuufi_4ekim.users
protected $table = 'users';
}
Migration Stratejisi
User model'e field eklerken SADECE tenant migration oluştur!
database/migrations/add_primary_sector_to_users.php ↓ Central DB'ye eklenir → YANLIŞ!
database/migrations/tenant/add_primary_sector_to_users.php ↓ Tenant DB'ye eklenir → DOĞRU!
php artisan tenants:migrate --force ↓ Tüm tenant'larda users tablosuna field eklenir
CLAUDE.md'de Yapılan Değişiklikler
1. Database Dağılımı Bölümü
- users, roles, permissions
- Kullanıcı & yetki sistemi
- users (SADECE sistem admin)
Tenant Database:
- users, roles, permissions
- HER TENANT KENDI KULLANICILARI
2. Kritik Kurallar Bölümü
user bilgisi yazma!
User → Central database'de!
central'dan okuma!
Her şey (users dahil)
tenant DB'den okunur!
3. Kod Örnekleri
User::all();
Role::all();
User::all(); // Tenant DB
Role::all(); // Tenant DB
Sonuç ve Etki
✅ Düzeltilen Dosyalar:
-
CLAUDE.md- Database dağılımı güncellendi -
public/readme/.../sektor-sistem-analiz/v1/index.html- "users (Tenant DB)" düzeltmesi
📊 Doğrulanan Veriler:
Bundan Sonra:
- User model'e field eklerken → TENANT migration oluştur
- Tenant context'te User::all() → Otomatik tenant DB'den çeker
- Her tenant tamamen izole - Kendi users, roles, permissions