JoRooms – çok kiracılı otel rezervasyon ekosistemini oluştururken, bir zorlukla karşılaştık: Süper Yöneticiler, Otel Yöneticileri ve Ajanlar için erişimi nasıl yöneteceğiz? Eğer/Else ifadeleri ile karmaşık bir yapı oluşturmadan bunu nasıl gerçekleştirebiliriz?
Cevap: Spatie Laravel Permission kullanarak Dinamik Rol Tabanlı Erişim Kontrolü (RBAC).
🛠 Mimari
“Sabit Roller” istemedik. İzinlerin ayrıntılı olduğu ve rollerin bu izinler için “kapsayıcılar” olarak tanımlandığı Esnek Bir Rol Motoru geliştirdik.
Teknoloji Yığını:
Backend: Laravel & Spatie (Gerçek Bilgi Kaynağı)
Mantık: Laravel Policies (çok kiracılı hotel_id kapsamı için)
Frontend: React (Kullanıcının İzin Anlık Görüntüsüne dayalı Koşullu Rendering)
🔑 Önemli Uygulama Noktaları
İzin Matris
if($user->isManager()) kontrolü yerine, if($user->can(‘manage-rooms’)) kontrolünü yapıyoruz. Bu, kimliği eylemden ayırıyor.Multi-Tenant Scoping (Otel Sınırı)
Otel A’daki bir yöneticinin Otel B’deki odaları düzenlememesi gerekiyor. Bunu Spatie izinlerini Laravel Policies ile birleştirerek çözüyoruz:Esnek UI
React tarafında sadece butonları gizlemekle kalmıyoruz; kullanıcının izin kümesini durumla senkronize ediyoruz, böylece kesintisiz ve güvenli bir UX sağlıyoruz.
💡 Bu Neden Ürün Büyümesi İçin Önemlidir
Esnek bir RBAC sistemi sadece bir “geliştirici görevi” değil – bu bir iş özelliğidir. Bize şunları sağlar:
Upsell: Gelişmiş raporlama erişimine sahip “Premium” roller oluşturma.
Daha Hızlı Onboarding: Belirli ajan seviyeleri için özel roller.
Güvenlik: “En Az Ayrıcalık İlkesi” (PoLP) izleme.
Sonuç? Tek bir kod satırı değiştirilmeden 10 otelden 10.000 otele ölçeklenebilen, güvenli bir çok kiracılı ortam.
🏗 SaaS uygulamalarınızdaki karmaşık yetkilendirmeleri nasıl yönetiyorsunuz?
Politikalar, yalnızca Kapılar mı, yoksa Özel Motor mu tercih ediyorsunuz? Yorumlarda tartışalım! 👇
Kaynak: Orijinal Makale


