العربية
  • oidc
  • wordpress

التكامل مع ووردبريس من أجل التفويض

الجزء الثاني من سلسلة التكامل مع لوغتو في ووردبريس، مع التركيز على التفويض.

Sijie
Sijie
Developer

في المقال السابق، ناقشنا كيفية التكامل بين لوغتو وووردبريس للمصادقة. هذا المقال، كجزء ثانٍ، سيغوص في عملية التفويض، مع التركيز على نظام الدور في ووردبريس وكيفية تنفيذ تعيين الأدوار باستخدام لوغتو، نظرًا لأن البرنامج المساعد الذي استخدمناه في المقال السابق لا يوفر قدرات التفويض بشكل مباشر.

سنقوم بإنشاء وظيفة تعيين الأدوار التي تخصِّص أدوار ووردبريس تلقائيًا للمستخدمين بناءً على أدوارهم التي يوفرها لوغتو RBAC (التحكم في الوصول القائم على الدور).

فهم أدوار مستخدمي ووردبريس

يمتلك ووردبريس نظام إدارة أدوار مستخدمين مضمن يعرِّف ما هي الإجراءات (القدرات) التي يمكن للمستخدم تنفيذها على الموقع. تشمل الأدوار الافتراضية للمستخدمين المدار، المحرر، الكاتب، المساهم، والمشترك، وكل منها يمتلك مجموعة خاصة من القدرات.

هذه الأدوار مهمة للحفاظ على أمان وكفاءة عمليات الموقع، حيث تساعد في ضمان أن المستخدمين لديهم مستويات الوصول المناسبة بناءً على مسؤولياتهم.

الحل: تعيين الأدوار المخصصة

لوغتو يستخدم التحكم في الوصول القائم على الدور (RBAC) كنموذج للتفويض، مستعينًا بـ "النطاقات" كوحدات صغيرة من الإذن. هذه النطاقات تحدِّد الإجراءات المحددة التي يُسمح للمستخدم المصادق عليه بتنفيذها ضمن تطبيق. مع ذلك، يعمل ووردبريس بمبدأ مختلف لإدارة أذونات المستخدم، متكلًا على "الأدوار" المحددة مسبقًا التي تضم قدرات متعددة معًا.

نظرًا لهذا الاختلاف الجوهري، نحن نقترح إنشاء أدوار خاصة ضمن لوغتو تتوافق مع الأدوار المحددة في ووردبريس. هذه الأدوار قد لا تتضمن أي نطاقات، وإنما تستخدم فقط كمرجع لتعيين المستخدمين لأدوار ووردبريس.

المتطلبات الأساسية

قبل المضي قدمًا، تأكد من أن لديك ما يلي:

  • إنهاء المقال السابق حول التكامل بين لوغتو وووردبريس للمصادقة، وهذا يشمل:
    • موقع ووردبريس مع صلاحية وصول كمسؤول.
    • حساب لوغتو مع تطبيق معد لموقع ووردبريس لديك.
    • تثبيت وتكوين OpenID Connect Generic plugin على موقع ووردبريس الخاص بك.
  • إعداد الأدوار في لوغتو التي تتوافق مع الأدوار في ووردبريس. على سبيل المثال، إذا كان لديك دور "محرر" في ووردبريس، قم بإنشاء دور "group:editors" في لوغتو.

تنفيذ تعيين الأدوار باستخدام الكود المخصص

لتنفيذ تعيين الأدوار، سنضيف كودًا مخصصًا إلى ملف functions.php الخاص بثيم ووردبريس. يشمل ذلك استخدام خطاف إجراء wp_login، الذي يتم تحفيزه عندما يقوم المستخدم بتسجيل الدخول. إليك دليل خطوة بخطوة حول كيفية إعداد ذلك:

الخطوة 1: الوصول إلى ملف functions.php في الثيم الخاص بك

افتح ملف functions.php الخاص بثيمك. يمكنك الوصول إلى هذا الملف من خلال لوحة إدارة ووردبريس عن طريق الانتقال إلى المظهر > محرر القالب واختيار functions.php من قائمة الملفات على الجهة اليمنى. أو في الكود المصدر، قم بالانتقال إلى دليل ثيم ووردبريس الخاص بك وحدد ملف functions.php. يتيح لك هذا الملف إضافة دوال PHP مخصصة توسع من وظائف موقع ووردبريس الخاص بك.

الخطوة 2: كتابة وظيفة تعيين الأدوار

فيما يلي مثال بسيط لوظيفة قد تضيفها إلى functions.php. هذه الوظيفة ستُحفز عند تسجيل دخول المستخدم، وستخصص الأدوار بناءً على مطالبة الأدوار التي تم جلبها من لوغتو.

الخطوة 3: فهم الكود وتخصيصه

  • وظيفة logto_handler: هذه الوظيفة تأخذ معلمين: $user_login (اسم المستخدم) و $user (كائن المستخدم). تستعيد الأدوار من لوغتو المخزّنة في ميتا المستخدم كـ openid-connect-generic-last-user-claim، وتعين هذا الدور لدور ووردبريس المقابل، وتخصصه للمستخدم.

  • add_action: هذه السطر يربط وظيفة logto_handler بإجراء wp_login، الذي يتم تحفيزه بعد تسجيل دخول المستخدم. الـ 10 هو الأولوية (الافتراضية)، و 2 يشير إلى عدد المعطيات التي تقبلها الوظيفة.

المثال أعلاه يخصص دور "محرر" للمستخدمين الذين تمت مصادقتهم عبر لوغتو بدور اسمه group:editors. مع ذلك، في سيناريو واقعي، ستحتاج لتطبيق أنواع أكثر من تعيينات الأدوار.

يمكنك العثور على قائمة بأدوار وأدوار ووردبريس وقدراتها هنا.

الخطوة 4: اختبار الإعداد الخاص بك

الآن، دعنا نختبر وظيفة تعيين الأدوار عن طريق تسجيل الدخول باستخدام مستخدم لديه دور group:editors في لوغتو. بعد تسجيل الدخول، تحقق من دور المستخدم في ووردبريس للتأكد من أن التعيين يعمل بشكل صحيح.

الخلاصة

بتكامل لوغتو مع ووردبريس لكل من المصادقة والتفويض، يمكنك تعزيز أمان ووظائف موقعك. تذكر، بينما الكود المقدم هنا هو مثال أساسي، قد تحتاج لتكييفه ليتناسب مع هيكل الأدوار والأذونات لموقع ووردبريس الخاص بك.