كيف يمكنني الارتباط بملف تعريف مستخدم بواسطة معرّف المستخدم الخاص به؟

لدي جدول ‘أعضاء’ في قاعدة بيانات تطبيقي، حيث أقوم بتخزين معلومات خاصة بالتطبيق لمجموعة فرعية من الأعضاء. أحد الأعمدة هو discourse_user_id. أود عرض رابط لملف العضو الشخصي في ديسكورش. هل من الممكن فعل ذلك باستخدام معرف المستخدم فقط؟

لا أقوم بتخزين discourse_user_name لأن المستخدم قد يغيره، وعندها سأضطر للقلق بشأن مزامنتها.

الطريقة الوحيدة التي تتبادر إلى ذهني هي إرسال طلب إلى واجهة برمجة التطبيقات (API) إلى /admin/users/<user-id>.json للحصول على اسم المستخدم، لكن هذا سيتطلب عددًا كبيرًا من الطلبات عند عرض صفحة الفهرس، حيث أقوم بسرد الأعضاء مع روابط لملفاتهم الشخصية.

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

إحدى الأفكار هي وضع معرف خارجي في سجل المستخدم، ثم يمكنك استخدام /by-external/:external_id. والفكرة الأخرى هي استخدام ويب هوك لإخطار قاعدة البيانات الخارجية الخاصة بك في حال تغييرهم لاسم المستخدم. وثالثة هي ببساطة تعطيل تغيير أسماء المستخدمين. ومن خلال نظرة سريعة على discourse/config/routes.rb، لا أرى أي مسار يستخدم user_id.

شكرًا لك @pfaffman، هذا مفيد جدًا. أعتقد أن استخدام معرف خارجي سيكون مثاليًا، حيث أنه يحل أيضًا مشكلة أخرى—الربط في الاتجاه المعاكس.

لكن بعد التصفح في وثائق الـ API وعميل REST، لا أرى كيفية تحديث هذا الحقل. هل يمكنني استخدامه دون تفعيل SSO؟ (وحتى لو قمت بتفعيل SSO، هل سأتمكن من تحديثه برمجياً؟)

عذراً، لا أعرف ذلك على الفور. سأحتاج إلى التحقق من الكود المصدري.

لا يوجد سبب لتحديث المفتاح الخارجي، حيث لا يُفترض أن تتغير المفاتيح.

الشيء الآخر الذي يمكنك فعله هو أن يعتمد كلا النظامين على أن عنوان البريد الإلكتروني متطابق.

أعتقد أن المصادقة الموحدة (SSO) هي ما ستحتاج إليه.

يمكنك تجربة هذا:

https://SERVER/community/admin/users/list/active.json?filter=email%40hostname.com&show_emails=true

ستحتاج إلى تمرير مفتاح API في رؤوس الطلب كما هو موثق في مكان آخر.

إعجاب واحد (1)

لقد أنشأت إضافة لتمكين هذا:

/user-by-id/123/summary يعيد التوجيه إلى /u/janedoe/summary وهكذا.

ما زلت مندهشًا من أنني اضطررت إلى فعل ذلك، لكن على الأقل يعمل!

إعجابَين (2)