نعم، يحتوي مكون WordPress الخاص بنا على خيار يقوم بشيء مشابه لهذا. طريقة عملها هي أنه عندما ينشئ مستخدم حسابًا في WordPress، أو يسجل الدخول إلى موقع WordPress، يتم إجراء اتصال بمسار /admin/users/sync_sso في Discourse. إذا كان المستخدم غير موجود بعد في Discourse، فإن هذا ينشئ مستخدمًا في Discourse. وإذا كان المستخدم موجودًا بالفعل في Discourse، فيمكن استخدام هذا الاتصال لتحديث تفاصيل حول المستخدم تغيرت في موقع مزود SSO. على سبيل المثال، يمكن استخدامه لتحديث اسم المستخدم أو اسم المستخدم أو عنوان البريد الإلكتروني. كما يمكن استخدامه لإضافة المستخدم إلى مجموعات Discourse أو إزالته منها.
للمراجعة العامة لمسار sync_sso، اطلع على Sync DiscourseConnect user data with the sync_sso route. إذا كان مطوروكم يرغبون في رؤية مثال عملي مكتوب بلغة PHP، فاطلعوا على هذا الملف من مكون WordPress الخاص بنا: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. الدالة الرئيسية التي يجب الانتباه إليها في هذا الملف هي دالة sync_sso.
السلبيات الوحيدة التي أعرفها هي أنها تضيف بعض التعقيد إلى كود SSO. وبطريقة التنفيذ في مكون WordPress، فإنها تضيف أيضًا استدعاءً لواجهة برمجة التطبيقات (API) إلى Discourse في كل مرة يسجل فيها مستخدم الدخول إلى موقع مزود SSO. وذلك لأنها مربوطة بحدث تسجيل الدخول في WordPress. وأنا لست على علم بأن هذا الاستدعاء يسبب مشاكل في حدود المعدل على أي مواقع، ولكن من الممكن إجراء الاستدعاء فقط عند إنشاء حساب جديد إذا كان ذلك يسبب مشكلة.
الإيجابيات في هذا النهج هي أنه يسمح لك بتحديث تفاصيل مستخدميك دون الحاجة إلى تسجيل دخولهم إلى Discourse عبر SSO. على سبيل المثال، يمكن أن يسمح لك بإضافة المستخدمين إلى مجموعة في Discourse عندما يقومون بإجراء ما على موقعك الإلكتروني.
من النهج الأخرى لدمج موقع إلكتروني مع Discourse عبر SSO هو استخدام روابط تسجيل دخول SSO على موقعك الإلكتروني. وهذا يسمح لك بعرض منتدى Discourse على موقعك الإلكتروني، والذي سيسجل دخول المستخدمين إلى Discourse وينقلهم إلى صفحة محددة. يحتوي هذا الموضوع على تفاصيل حول كيفية إعداده: إنشاء رابط تسجيل دخول SSO.