Bubble ile kod yazmadan web uygulamaları geliştirirken en kritik ihtiyaçlardan biri kullanıcı yönetimi ve yetkilendirmedir. Bubble'da kullanıcı girişi, OAuth entegrasyonu ve özel roller sayesinde kullanıcılarınıza güvenli bir deneyim sunarken uygulamanızın iş mantığını da doğru şekilde kontrol edebilirsiniz. Bu yazıda, Bubble'ın yerleşik kullanıcı sistemini kullanarak nasıl kayıt, giriş, OAuth (Google, Facebook vb.) entegrasyonu ve rol tabanlı erişim kontrolü yapabileceğinizi adım adım ele alıyoruz.
Bubble'ın Varsayılan Kullanıcı Sistemi: Temel Kavramlar
Bubble, her uygulamaya otomatik olarak bir User veri türü ekler. Bu veri türü; email, şifre (otomatik hashlenmiş), ad, profil resmi gibi alanları içerir. Ayrıca her kullanıcı için benzersiz bir slug ve kayıt tarihi gibi dahili alanlar da mevcuttur. Bu yapı sayesinde hiç kod yazmadan kayıt/giriş sayfaları oluşturabilir, şifre sıfırlama akışları kurabilirsiniz.
Kullanıcı Kaydı İçin Gerekli Adımlar
- Signup formu oluşturma: Bir Input alanına email, bir Input alanına şifre (type: password) ekleyin. Butona tıklayınca Create a new User workflow adımını kullanın.
- Email doğrulama: Bubble, varsayılan olarak email doğrulama e-postası göndermez. Bunu etkinleştirmek için Settings → Email bölümünden SMTP ayarlarını yapın ve workflow'a Send email adımını ekleyin.
- Hata yönetimi: Kullanıcı aynı email ile kayıtlıysa veya şifre çok kısaysa Bubble otomatik olarak hata mesajı döndürür. Bunları yakalamak için workflow'da Conditional kullanarak kullanıcıya anlamlı hatalar gösterebilirsiniz.
OAuth Entegrasyonu: Google ve Facebook ile Giriş
Bubble, Plugins kategorisinde OAuth 2.0 eklentilerini destekler. Popüler sağlayıcılar için hazır eklentiler bulunur. Google ile giriş entegrasyonu için şu adımları izleyin:
- Plugin yükleme: Bubble Editor’de Plugins sekmesine gidin, Google OAuth eklentisini yükleyin.
- Yapılandırma: Eklenti ayarlarında Google Cloud Console’dan aldığınız Client ID ve Client Secret’ı girin. Redirect URI’yi Bubble’ın sağladığı URL olarak ayarlayın (örneğin:
https://your-app.bubbleapps.io/oauth/google). - Workflow oluşturma: Bir butona “Sign in with Google” işlevi atayın. Workflow’da Google OAuth → Authenticate adımını ekleyin. Başarılı olduğunda kullanıcıyı Redirect to page ile ana sayfaya yönlendirin.
- Kullanıcı verisini kaydetme: OAuth sonrası dönen email ve name alanlarını alıp mevcut User veritabanında güncelleyin veya yeni bir User oluşturun.
Facebook, LinkedIn, Apple gibi diğer sağlayıcılar da benzer şekilde çalışır. Her biri için ayrı eklenti yüklemeniz gerekir. Bu sayede kullanıcılarınıza tek tıkla giriş imkanı sunar, kayıt sürtüşmesini azaltırsınız.
Özel Kullanıcı Rolleri ve Yetkilendirme
Her uygulamanın farklı kullanıcı tiplerine ihtiyacı vardır: admin, editör, üye vb. Bubble'da rol tabanlı yetkilendirme için User veri türüne bir alan ekleyerek bu rolü saklayabilirsiniz.
Adım Adım Rol Tasarımı
- Alan ekleme: Data → User bölümünde Create a new field diyerek role adında bir text alanı oluşturun. Veya daha kontrollü olması için option set kullanın: Role adında bir option set oluşturun (admin, editor, user gibi seçeneklerle) ve User alanını bu option set'e referans yapın.
- Kayıt anında rol atama: Signup workflow'unda Create a new User adımına ek olarak Set the User's role to “user” (veya varsayılan rol) ekleyin. Admin oluşturmak için ise ayrı bir admin kayıt workflow'u yapabilirsiniz.
- Sayfa ve element bazında yetkilendirme: Bubble'da her sayfanın Visibility ayarı vardır. Örneğin admin paneline sadece Current User's role = admin olanlar erişebilsin istiyorsanız, sayfanın Privacy sekmesinde This page is visible only when koşulu ekleyin:
Current User's role = admin. - Workflow yetkilendirmesi: Admin dışındaki kullanıcıların belirli tetikleyicileri çalıştırmasını engellemek için workflow'da Only when koşulu kullanın. Örneğin “Sil” butonuna tıklandığında Current User's role = admin ise işlemi gerçekleştir.
Performans ve Güvenlik İpuçları
Bubble'da yetkilendirme yaparken dikkat edilmesi gereken bazı püf noktaları vardır:
- Her sayfada privacy ayarını unutmayın: Sadece sayfa düzeyinde değil, Repeating Group gibi elementlerde de veri gizliliğini kontrol edin. Data source olarak “Current User” bazlı filtreler kullanın.
- Özel veri türleri için de yetkilendirme ekleyin: Diğer veri türlerinde (örneğin Post, Order) “creator” alanı tutarak sadece oluşturan kullanıcının düzenlemesine izin verin.
- Rate limiting ve güvenlik: OAuth entegrasyonunda token sürelerini yönetin. Bubble içinde hazır bir rate limit yoktur, ancak eklentiler veya Make gibi araçlarla harici güvenlik katmanı ekleyebilirsiniz. Detaylı bilgi için Make (Integromat) vs Zapier yazımıza göz atabilirsiniz.
- Test ortamında rol değişikliği: Bubble'ın debug modunda test kullanıcıları oluşturup rollerini manuel değiştirerek yetkilendirme kontrollerinizi test edin.
Sık Karşılaşılan Sorunlar ve Çözümleri
| Sorun | Çözüm |
|---|---|
| OAuth girişi sonrası kullanıcı verisi kaydedilmiyor | Workflow'ta “Create a new User” adımından önce “Get data from external API” ile gelen email ve name bilgilerini alın, ardından User oluştururken bu alanları eşleyin. |
| Özel rol alanı sayfa gizliliğinde görünmüyor | User veri türüne eklediğiniz alanın Show in privacy kutucuğunu işaretleyin. Aksi halde privacy koşullarında kullanamazsınız. |
| Kullanıcı kaydolduktan sonra email doğrulama gelmiyor | SMTP ayarlarını kontrol edin. Bubble'ın ücretsiz planında email gönderme limiti vardır. Limit aşıldıysa bir sonraki günü bekleyin veya üçüncü taraf SMTP (SendGrid vb.) kullanın. |
| Yetkilendirme ihlali: Kullanıcı admin sayfasına manuel URL ile erişiyor | Sayfa privacy koşuluna ek olarak, sayfa yüklendiğinde Custom event ile kontrol yapın ve yetkisizse başka sayfaya yönlendirin. |
Bubble'da Yetkilendirme ile İlgili İleri Düzey Konular
Daha karmaşık senaryolar için Bubble'ın Server-side actions (backend workflows) özelliğini kullanabilirsiniz. Örneğin, belirli bir işlemi sadece adminlerin yapmasını garanti altına almak için backend workflow oluşturup Current User kontrolünü orada yapabilirsiniz. Ayrıca, API üzerinden gelen isteklerde de yetkilendirme yapmak isterseniz, Bubble'ın API Key ve User token sistemini kullanabilirsiniz.
Yetkilendirme yaparken veritabanı sorgularını optimize etmek de önemlidir. İlişkisel veri modellerinde kullanıcı rollerini saklamak ölçeklenebilirliği artırır. Örneğin, bir organizasyon yapınız varsa, Organization veri türü oluşturup üyelikleri Membership türüyle yönetebilirsiniz. Bu sayede bir kullanıcı birden fazla organizasyonda farklı rollere sahip olabilir.
Bubble'da rol tabanlı yetkilendirme konusunda daha fazla bilgi edinmek için REST API'lerde Rate Limiting Stratejileri yazımızı da okuyabilirsiniz.
Sonuç olarak, Bubble'da kullanıcı girişi ve yetkilendirme, platformun sunduğu yerleşik araçlarla oldukça kolaydır. Doğru rol tasarımı ve privacy ayarları sayesinde hem güvenli hem de kullanıcı dostu bir uygulama geliştirebilirsiniz. Adımları uygularken test etmeyi ve hata senaryolarını düşünmeyi unutmayın.
Sık Sorulan Sorular
Bubble'da OAuth entegrasyonu için hangi eklentileri kullanmalıyım?
Bubble, Google, Facebook, Apple ve LinkedIn gibi popüler sağlayıcılar için hazır OAuth eklentileri sunar. Plugin sekmesinden ilgili eklentiyi yükleyip Client ID ve Secret bilgilerini girerek entegrasyonu tamamlayabilirsiniz.
Bubble'da kullanıcı rollerini nasıl oluşturabilirim?
User veri türüne bir alan ekleyerek (text veya option set) kullanıcı rolünü saklayabilirsiniz. Option set kullanmak, rolleri standartlaştırmak ve hataları azaltmak için önerilir.
Bubble'da belirli bir sayfayı sadece adminlere nasıl gösterebilirim?
Sayfanın Privacy sekmesinde "This page is visible only when" koşuluna "Current User's role = admin" yazarak yetkilendirme yapabilirsiniz. Aynı şekilde elementlerin visibility ayarlarını da değiştirebilirsiniz.
Bubble'da OAuth ile giriş yapan kullanıcının verilerini nasıl alabilirim?
OAuth workflow'unda "Google OAuth → Authenticate" adımından sonra dönen result (örneğin email, name) alanlarını alıp User oluştururken bu değerleri eşleyebilirsiniz.
Bubble'da yetkilendirme testi nasıl yapılır?
Bubble'ın debug modunda test kullanıcıları oluşturun ve rollerini manuel olarak değiştirin. Sayfa ve workflow privacy koşullarının doğru çalıştığını kontrol edin.






