Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Spatie’nin ekip modundan çoklu kiracılık için neden vazgeçtim
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Spatie’nin ekip modundan çoklu kiracılık için neden vazgeçtim

Yazılım

Spatie’nin ekip modundan çoklu kiracılık için neden vazgeçtim

teknomers
Son güncelleme: 10 Temmuz 2026 21:39
teknomers
Paylaş
Paylaş

Çoklu kiracılık (Multi-tenancy) yaklaşımı, genellikle kiracıya özel rollerin nerede tutulması gerektiği sorusunu gündeme getirir.

Multi-Tenant Starter’ı inşa etmeye başladığımda, bir TeamUser pivot tablosuyla başlamadım. Bunun yerine, Spatie’nin kendi takım özelliğini kullandım, çünkü bu özellik zaten laravel-permission paketinde mevcut ve başlangıç noktası olarak mantıklı görünüyordu.

Bu yaklaşımı daha önce Filament Mastery’de yazmıştım: Spatie’nin konfigürasyonunda teams => true aktif hale getirilerek, rol atamalarının setPermissionsTeamId() ile bir kiracı middleware’ı içinde sınırlanması gibi işlemler.

Ancak bu yöntem beklediğim gibi çalışmadı ve bunun nedeni daha ilginçti.


Başlangıç Noktası

Spatie’nin laravel-permission paketi, takımlar için yerleşik destek sunmaktadır. Aktif hale getirilirse, model_has_roles tablosundaki her satır için team_id sütunu eklenir. Bir rol ataması, global yerine bir takıma özel hale gelir ki bu, çoklu kiracılık gereksinimleri için doğru bir başlangıç noktasıdır.

Bu nedenle, ben de buradan yola çıktım. Bir User, bir Team ile ilişkilidir ve bu takım içindeki rolü Spatie rolü olarak team_id ile saklanır.


Sorunun Ortaya Çıktığı Nokta

Multi-Tenant Starter’da bir kullanıcı, herhangi bir takıma ait olmadan Member uygulama rolünü (üye paneline erişim sağlayan rol) alabilir. Birisi davet edilir, kayıt olur veya üye olur ve takıma katılmadan önce üye paneline ulaşır.

Spatie’nin takım modu aktif olduğunda, model_has_roles tablosundaki her satır için bir team_id gereklidir. Spatie’nin kendi migration dosyasına baktığınızda, team_id bu tablonun bileşik birincil anahtarı parçası haline gelir:

$table->primary(
[$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'], 'model_has_roles_role_model_type_primary'
);

Bileşik birincil anahtar, sütunlardan herhangi birinin NULL değerini içermesine izin vermez; bu, standart bir SQL kısıtlamasıdır ve Spatie tarafından belirlenmemiştir. İşte bu nedenle, sütunun var olabilmesi için bir varsayılan değere ihtiyacı vardır:

$table->unsignedBigInteger($columnNames['team_foreign_key'])->default('1');

Bunu yapmadığınız takdirde, bir team_id bilinmeden yapılan herhangi bir rol ataması veritabanı seviyesinde başarısız olur. Bununla birlikte, varsayılan değer ile ekleme başarılı olur; fakat kullanıcıya ait bir takım bilinmeden atanan rol, sessizce 1 ID’li takıma eklenir. Bu, bir hata değil, bir istisna değil; sadece kullanıcının gerçek anlamda ilişkisi olmadığı bir takıma yönelik rol atanmasıdır. Bu durum, bir hata durumundan daha kötü: hiçbir şey çökmez, uyarı yapmaz ve veriler yanlış kalır, birisi kullanıcının katılmadığı bir takımda izinleri olduğunu fark edene kadar.

Ben de bu durumu, takım ID’sini 1 ile özel bir hale getirmeyi veya Spatie’nin migration dosyasını değiştirerek team_id‘nin NULL olabilmesini sağlamayı istemedim; bu, birincil anahtarı tamamen kaldırmadan ya da yerine benzersiz bir indeks koymadan izin vermez. Bu nedenle, takım modundan tamamen geri adım attım.


Bunun Yerine Ne Yaptım?

Tamamı için makale, Filament Mastery‘de ücretsiz üyelere sunulmuştur.

Kaynak: Orijinal Makale

Contents
  • Başlangıç Noktası
  • Sorunun Ortaya Çıktığı Nokta
  • Bunun Yerine Ne Yaptım?
Laravel Boost AI ile Tam Bir Blog Platformu Oluşturma: AI Destekli Geliştirmede Yeni Bir Dönem
PHPLaravel ile Uygulama İzleme: Hata Ayıklama ve Performans Yönetimi
Laravel’de özel yardımcı fonksiyonlar nasıl oluşturulur?
Deploynix’te Laravel API ve Ayrı Ön Yüz (Next.js, Nuxt, SPA) Dağıtımı
2026’da PHP Geliştiricileri için En İyi 10 VS Code Eklentisi
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Netflix Oyunlar, Podcast’ler ve Videolarla YouTube Oluyor
Sonraki Makale Acil: Altı yeni U-Boot açığı, cihazları çökertip kod çalıştırabilir

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Kritik İhlal: Hacker Sunucusu Binlerce WordPress Sitesini Tehdit Ediyor
Siber Güvenlik
Tencent, Beijing müdahalesiyle Meta’dan Manus’u satın alacak mı?
Donanım
Dumb Co, iPhone’umu hack’li bir katlanır telefona takas etmemi sağladı
Genel
Microsoft Yabancı Çalışan Vizelerinin Xbox İşten Çıkarmalarındaki Rolünü Reddetti
Oyun
Pokémon Go Nihayet İlk Vaadini Gerçekleştirdi
Liste
Açık kaynak yapay zeka, Hugging Face’e göre artık daha önemli
Yapay Zeka
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?