إنشاء مستخدمين من خلال API باستخدام معرفات المستخدم الصريحة

مرحبًا، لقد كنت أستخدم واجهة برمجة تطبيقات Discourse وإضافة OAuth2 لنقل المستخدمين وتسجيل دخولهم من خدمة SSO الخاصة بي إلى تثبيت Discourse خاص. حتى الآن، تمكنت من نقل جميع مستخدمين SSO إلى Discourse بنجاح عبر البرمجة. عند النقل البرمجي، يتم إنشاء مستخدمين جدد بمعرف داخلي خاص بـ Discourse يتزايد تلقائيًا. سؤالي هو: هل يمكنني استخدام الواجهة لإنشاء مستخدم باستخدام معرف صريح لهذا المستخدم؟ بمعنى، إذا عيّنت معرفًا مستخدمًا بقيمة 22، فيمكنني الاستعلام عنه عبر /admin/users/22.json.

لقد جربت تمرير المعاملين ‘id’ و’external_id’ في جسم طلب POST، لكن ذلك لم ينجح.

تعديل: أيضًا، هل توجد طريقة عبر الواجهة، بمعلومية معرف مستخدم محدد، لتغيير اسم المستخدم الخاص به؟

شكرًا لك

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

لا يمكنك تعيين المعرف.

هناك مسار معرف خارجي:

    get "#{root_path}/by-external/:external_id" => "users#show", constraints: { external_id: /[^\/]+/ }

إذا قمت بتفعيل إعداد الموقع sso_overrides_username (أعتقد أن هذا موجود)، فلن تحتاج إلى تغيير اسم المستخدم عبر واجهة برمجة التطبيقات.

3 إعجابات

شكرًا لك، لكنني لا أملك الـ external_id عند إنشاء المستخدم. يتم إنشاء المستخدم برمجياً، ولن تتم الربط مع نظام SSO الخارجي إلا بعد تسجيل دخول المستخدم إلى Discourse. ما لم تكن هناك طريقة لربط المستخدم بالـ external_id برمجياً أثناء عملية الهجرة، فأنا لا أعتقد أنه يمكن استخدام الـ external_id.

هل تملك بيانات في Discourse مسبقًا يحتاج هؤلاء المستخدمون للارتباط بها؟ لماذا تحتاج إلى إنشاء المستخدمين؟

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

هل بدأت موضوعًا جديدًا أم تم حذف العناصر الأخرى بطريقة ما؟

يبدو أن نظام الدخول الموحد (SSO) سيمتلك الحساب وسيعرف معرفًا خارجيًا يمكنك استخدامه لإنشاء سجل المستخدم، ثم استخدامه في المستقبل. ولكن إذا كان ذلك مستحيلًا بطريقة ما، يمكنك محاولة البحث عن المستخدم عبر عنوان البريد الإلكتروني. بل يمكنك حتى إنشاء عنوان بريد إلكتروني ثانٍ وهمي (فماذا لو غيّر المستخدم عنوان بريده الإلكتروني الحقيقي؟)، ثم ربما إخفاؤه بطريقة ما لاستخدامه كمعرف مستقبلاً.