Bir Python/FastAPI Geliştiricisiyim – Bu nedenle Laravel ile bir IAM Sistemi Kurdum.
FastAPI, Django ve Flask ile çalışan bir backend geliştiricisi olarak, her zaman temiz mimari ve ölçeklenebilir yetkilendirme sistemlerine büyük önem verdim.
Ancak, her SaaS ürünü oluşturduğumda aynı sorunla karşılaştım:
👉 İzinler hızla karmaşık hale geliyor…
🧠 Gerçek Sorun: Bağlamsal Yetki
Diyelim ki:
• Bir kullanıcı A Şubesi’nde Müdür
• Aynı kullanıcı B Şubesi’nde Görüntüleyici
Çoğu RBAC sistemi burada sorun yaşıyor.
Ya:
• tonlarca koşullu mantık ekliyorsunuz ❌
• ya da sıkı sıkıya bağlı, bakımının zor olduğu izin kuralları oluşturuyorsunuz ❌
😵 Kriz Noktası
Sistemler büyüdükçe, şu sorunlarla karşılaşırsınız:
• Rol patlamaları (çok fazla rol)
• İç içe bağımlılıklar
• Sabit kodlanmış izin kontrolleri
• “Kim ne yapabilir?” belirsizleşir
Bunu Python projelerimde sıkça yaşadım… ve şaşırtıcı bir şekilde, aynı sorun Laravel’de de mevcut.
🚀 Böylece Şunu Yaptım: Laravel IAM (v0.2.0)
Sorunu yamanın yerine, şu özellikleri işleyen bir sistem tasarladım:
✔ Bağlamsal izinler (kapsam bazında: kiracı, ekip, şube)
✔ Wildcard izinler (expense., *.)
✔ Hiyerarşik erişim (manage → tüm işlemler)
✔ Dinamik çözümleme (hardcoded roller olmadan)
⚙️ Temel Fikir: “Dört Doğru Seviyesi”
Motor, izinleri katmanlı bir yaklaşım ile çözümler:
- Doğrudan İzin → tam eşleşme
- Wildcard Eşleşmesi → resource.*
- Hiyerarşi Kuralı → resource.manage
- Küresel Erişim → .
Bu, karmaşık SaaS ortamlarında bile anında ve öngörülebilir izin çözümü sağlar.
🔥 Neden Sadece Mevcut Paketleri Kullanmıyorsunuz?
Spatie gibi paketler temel RBAC için harika 👏
Ancak bunlar tam olarak çözmüyor:
• Bağlam tabanlı erişim kontrolü
• Dinamik çok kiracılı sistemler
• İş akışına duyarlı izin çözümü
💡 Örnek
IAM::can($user, ‘expense.approve’);
Kompleks koşullara gerek yok.
Hardcoded roller yok.
Sadece temiz, öngörülebilir mantık.
🛠️ Açık Kaynak – Deneyin
Projeyi açık kaynak hale getirdim ve topluluktan geri bildirim almayı çok isterim:
📦 Packagist: https://packagist.org/packages/apurba-labs/laravel-iam
💻 GitHub: https://github.com/apurba-labs/laravel-iam
💬 Tartışalım
Projelerinizde bağlamsal izinleri nasıl yönetiyorsunuz?
RBAC sistemleri ile benzer sorunlarla karşılaştınız mı?
Kaynak: Orijinal Makale


