التكامل مع ووردبريس من أجل التفويض
الجزء الثاني من سلسلة التكامل مع لوغتو في ووردبريس، مع التركيز على التفويض.
الجزء الثاني من سلسلة التكامل مع لوغتو في ووردبريس، مع التركيز على التفويض.
في المقال السابق، ناقشنا كيفية التكامل بين لوغتو وووردبريس للمصادقة. هذا المقال، كجزء ثانٍ، سيغوص في عملية التفويض، مع التركيز على نظام الدور في ووردبريس وكيفية تنفيذ تعيين الأدوار باستخدام لوغتو، نظرًا لأن البرنامج المساعد الذي استخدمناه في المقال السابق لا يوفر قدرات التفويض بشكل مباشر.
سنقوم بإنشاء وظيفة تعيين الأدوار التي تخصِّص أدوار ووردبريس تلقائيًا للمستخدمين بناءً على أدوارهم التي يوفرها لوغتو RBAC (التحكم في الوصول القائم على الدور).
يمتلك ووردبريس نظام إدارة أدوار مستخدمين مضمن يعرِّف ما هي الإجراءات (القدرات) التي يمكن للمستخدم تنفيذها على الموقع. تشمل الأدوار الافتراضية للمستخدمين المدار، المحرر، الكاتب، المساهم، والمشترك، وكل منها يمتلك مجموعة خاصة من القدرات.
هذه الأدوار مهمة للحفاظ على أمان وكفاءة عمليات الموقع، حيث تساعد في ضمان أن المستخدمين لديهم مستويات الوصول المناسبة بناءً على مسؤولياتهم.
لوغتو يستخدم التحكم في الوصول القائم على الدور (RBAC) كنموذج للتفويض، مستعينًا بـ "النطاقات" كوحدات صغيرة من الإذن. هذه النطاقات تحدِّد الإجراءات المحددة التي يُسمح للمستخدم المصادق عليه بتنفيذها ضمن تطبيق. مع ذلك، يعمل ووردبريس بمبدأ مختلف لإدارة أذونات المستخدم، متكلًا على "الأدوار" المحددة مسبقًا التي تضم قدرات متعددة معًا.
نظرًا لهذا الاختلاف الجوهري، نحن نقترح إنشاء أدوار خاصة ضمن لوغتو تتوافق مع الأدوار المحددة في ووردبريس. هذه الأدوار قد لا تتضمن أي نطاقات، وإنما تستخدم فقط كمرجع لتعيين المستخدمين لأدوار ووردبريس.
قبل المضي قدمًا، تأكد من أن لديك ما يلي:
لتنفيذ تعيين الأدوار، سنضيف كودًا مخصصًا إلى ملف functions.php الخاص بثيم ووردبريس. يشمل ذلك استخدام خطاف إجراء wp_login، الذي يتم تحفيزه عندما يقوم المستخدم بتسجيل الدخول. إليك دليل خطوة بخطوة حول كيفية إعداد ذلك:
افتح ملف functions.php الخاص بثيمك. يمكنك الوصول إلى هذا الملف من خلال لوحة إدارة ووردبريس عن طريق الانتقال إلى المظهر > محرر القالب واختيار functions.php من قائمة الملفات على الجهة اليمنى. أو في الكود المصدر، قم بالانتقال إلى دليل ثيم ووردبريس الخاص بك وحدد ملف functions.php. يتيح لك هذا الملف إضافة دوال PHP مخصصة توسع من وظائف موقع ووردبريس الخاص بك.
فيما يلي مثال بسيط لوظيفة قد تضيفها إلى functions.php. هذه الوظيفة ستُحفز عند تسجيل دخول المستخدم، وستخصص الأدوار بناءً على مطالبة الأدوار التي تم جلبها من لوغتو.
وظيفة logto_handler: هذه الوظيفة تأخذ معلمين: $user_login (اسم المستخدم) و $user (كائن المستخدم). تستعيد الأدوار من لوغتو المخزّنة في ميتا المستخدم كـ openid-connect-generic-last-user-claim، وتعين هذا الدور لدور ووردبريس المقابل، وتخصصه للمستخدم.
add_action: هذه السطر يربط وظيفة logto_handler بإجراء wp_login، الذي يتم تحفيزه بعد تسجيل دخول المستخدم. الـ 10 هو الأولوية (الافتراضية)، و 2 يشير إلى عدد المعطيات التي تقبلها الوظيفة.
المثال أعلاه يخصص دور "محرر" للمستخدمين الذين تمت مصادقتهم عبر لوغتو بدور اسمه group:editors. مع ذلك، في سيناريو واقعي، ستحتاج لتطبيق أنواع أكثر من تعيينات الأدوار.
يمكنك العثور على قائمة بأدوار وأدوار ووردبريس وقدراتها هنا.
الآن، دعنا نختبر وظيفة تعيين الأدوار عن طريق تسجيل الدخول باستخدام مستخدم لديه دور group:editors في لوغتو. بعد تسجيل الدخول، تحقق من دور المستخدم في ووردبريس للتأكد من أن التعيين يعمل بشكل صحيح.
بتكامل لوغتو مع ووردبريس لكل من المصادقة والتفويض، يمكنك تعزيز أمان ووظائف موقعك. تذكر، بينما الكود المقدم هنا هو مثال أساسي، قد تحتاج لتكييفه ليتناسب مع هيكل الأدوار والأذونات لموقع ووردبريس الخاص بك.