Türkçe
  • oidc
  • wordpress

WordPress ile Yetkilendirme için Entegrasyon

Logto'yu WordPress ile entegrasyon serisinin ikinci bölümü, yetkilendirmeye odaklanıyor.

Sijie
Sijie
Developer

Önceki makalede, WordPress'te Logto'nun kimlik doğrulama için nasıl entegre edileceği üzerinde durduk. Bu makale, ikinci kısım olarak, yetkilendirme sürecine girecek ve WordPress'teki rol sistemine ve önceki makalede kullandığımız eklentinin doğrudan yetkilendirme yetenekleri sağlamadığı göz önüne alındığında, Logto ile rol eşlemeyi nasıl gerçekleştireceğimize odaklanacak.

Logto RBAC (Role-Based Access Control)'nin sağladığı rollerine göre kullanıcılara otomatik olarak WordPress rolleri atayan bir rol eşleme fonksiyonu oluşturacağız.

WordPress kullanıcı rollerini anlama

WordPress, bir kullanıcının bir sitedeki hangi eylemleri (yetenekleri) gerçekleştirebileceğini tanımlayan yerleşik bir kullanıcı rol yönetim sistemine sahip. Varsayılan kullanıcı rolleri arasında Yönetici, Editör, Yazar, Katkıda Bulunan ve Abone, her birinin kendi yetenekleri bulunmaktadır.

Bu roller, kullanıcıların sorumluluklarına göre uygun erişim seviyelerine sahip olmalarını sağlayarak site operasyonlarının güvenliğini ve verimliliğini sürdürmede önemlidir.

Çözüm: özel rol eşlemesi

Logto, yetkilendirme modeli olarak Rol Tabanlı Erişim Kontrolü (RBAC)'ni kullanır, "kapsamları" minimum izin birimi olarak kullanır. Bu kapsamlar, kimlik doğrulanmış bir kullanıcının bir uygulama içindeki belirli eylemleri gerçekleştirmesine izin verdiği spesifik eylemleri tanımlar. Ancak, WordPress, kullanıcı izinlerini yönetmek için farklı bir prensip kullanır, önceden tanımlanmış "roller" üzerinde durur ve çeşitli yetenekleri bir arada sunar.

Bu temel fark göz önüne alındığında, WordPress'te tanımlanan rollere karşılık gelen özel roller oluşturmayı öneririz. Bu rollerin herhangi bir kapsamı olmayabilir, yalnızca kullanıcıları WordPress rollerine eşlemek için bir referans olarak kullanılırlar.

Önkoşullar

Devam etmeden önce, aşağıdakilere sahip olduğunuzdan emin olun:

  • WordPress'te Logto ile entegrasyon için önceki makaleyi tamamlayın, bu içerir:
    • Yönetici erişimine sahip bir WordPress sitesi.
    • WordPress siteniz için kurulu bir uygulama ile bir Logto hesabı.
    • WordPress sitenizde yüklü ve yapılandırılmış OpenID Connect Generic eklentisi.
  • WordPress'teki rollerle eşleşen Logto'da roller kurun. Örneğin, WordPress'te 'editör' rolünüz varsa, Logto'da 'grup:editörler' rolü oluşturun.

Özel kodla rol eşlemesini uygulama

Rol eşlemesini uygulamak için, WordPress temanızın functions.php dosyasına özel bir kod ekleyeceğiz. Bu, bir kullanıcının giriş yaptığı zaman tetiklenen wp_login eylem kancasını kullanmayı içerir. İşte bunu nasıl ayarlayacağınız konusunda adım adım bir rehber:

Adım 1: temanızın functions.php'sine erişim

Temanızın functions.php' dosyasını açın. Bu dosyaya WordPress yönetici panelinden Görünüm > Tema Düzenleyiciyi seçerek ve sağ taraftaki dosyalar listesinden functions.php'yi seçerek erişebilirsiniz. Veya kaynak kodda, WordPress temanızın dizinine gidin ve functions.php` dosyasını bulun. Bu dosya, WordPress sitenizin işlevselliğini genişletmek için özel PHP fonksiyonları eklemenize olanak sağlar.

Adım 2: rol eşleme fonksiyonunu yazın

Aşağıda, functions.php'ye eklemeniz gereken bir fonksiyonun basit bir örneği bulunmaktadır. Bu fonksiyon, kullanıcı girişi yapıldığında tetiklenir ve Logto'dan alınan kullanıcının roller iddiasına göre roller atar.

Adım 3: kodu anlama ve özelleştirme

  • logto_handler fonksiyonu: Bu fonksiyon iki parametre alır: $user_login (kullanıcı adı) ve $user (kullanıcı nesnesi). Kullanıcı meta olarak saklanan Logto'dan rolleri alır, openid-connect-generic-last-user-claim, bu rolü karşılık gelen bir WordPress rolüne eşler ve kullanıcıya atar.

  • add_action: Bu satır, bir kullanıcı giriş yaptıktan sonra tetiklenen wp_login eylemine logto_handler fonksiyonunu iliştirir. 10, önceliği (varsayılan) belirtir ve 2, fonksiyonun kabul ettiği argümanların sayısını gösterir.

Yukarıdaki örnek, group:editors rol adı ile Logto üzerinden kimlik doğrulanan kullanıcılara 'editor' rolünü atar. Ancak, gerçek dünya senaryosunda, muhtemelen daha fazla çeşit rol eşlemesi uygulamanız gerekecektir.

WordPress rollerinin ve yeteneklerinin listesini buradan bulabilirsiniz.

Adım 4: kurulumunuzu test edin

Şimdi, Logto'da group:editors rolüne sahip bir kullanıcı ile giriş yaparak rol eşleme fonksiyonunu test edelim. Giriş yaptıktan sonra, WordPress'teki kullanıcının rolünü kontrol edin ve eşlemenin doğru şekilde çalıştığından emin olun.

Sonuç

Kimlik doğrulama ve yetkilendirme için WordPress ile Logto'yu entegre ederek, sitenizin güvenliğini ve işlevselliğini artırabilirsiniz. Burada sağlanan kod, temel bir örnektir ve muhtemelen WordPress sitenizdeki roller ve izinler yapısına uyarlaması gerekmektedir.