currentUser.groups لا تتطابق مع جدول group_users

أعتقد أن هذا خطأ، لكن لا تتردد في إعادة تصنيفه إلى Development

خطوات التكرار

  1. أنشئ سمة بالانتقال إلى Admin > Themes > Common > </head> والصق الكود التالي

    <script type="text/discourse-plugin" version="0.8.42">
      const currentUser = api.getCurrentUser()
      const groupIds = currentUser.groups.map(x => x.id)
      console.log(`User id: ${currentUser.id} Group ids: ${groupIds} (${groupIds.length})`)
    </script>
    
  2. تظاهر بتسجيل الدخول كمستخدمين مختلفين لترى المجموعات التي تحصل عليها

  3. انتقل إلى Data Explorer (أو قاعدة البيانات) وشغّل استعلام قاعدة البيانات التالي

    SELECT
        u.id,
        array_agg(group_id),
        count(group_id)
    FROM
        group_users gu
        LEFT JOIN users u ON u.id = gu.user_id
        LEFT JOIN GROUPS g ON g.id = gu.group_id
    WHERE
        user_id IN (2, 3, 6) -- أو أي معرفات مستخدمين تظاهرت بها
    GROUP BY
        u.id
    ORDER BY
        u.id
    

مخرجات قاعدة البيانات

- 2	{1,3,10,11,12,13,14,50,63,64,68}	11

- 3	{2,3,10,11,12,13,14,53,54,59,61,75,77,79,88}	15 

- 6	{10,11,54,75,77,87}	6

مخرجات واجهة برمجة التطبيقات (API)

- User id: 2 Group ids: 1, 3, 10, 11, 12, 13, 14, 50, 63, 64, 68 (11)

- User id: 3 Group ids: 10, 53, 54, 59, 61, 75, 79, 88 (8) <= 7 مجموعات مفقودة

- User id: 6 Group ids: 10, 54 (2) <= 4 مجموعات مفقودة

مخرجات قاعدة البيانات صحيحة (يمكنني رؤية أن هؤلاء المستخدمين لديهم تلك المجموعات مُعيّنة في الواجهة)، لذا يبدو أن هناك مشكلة في واجهة برمجة التطبيقات (API). ما الذي قد يتسبب في عدم إرسال بعض المجموعات إلى currentUser.groups؟

هل من الممكن أن المجموعات المفقودة تم تكوينها لتكون مخفية عن المستخدمين؟ إذا كان الأمر كذلك، فلن يتم تضمينها في كائن currentUser على جانب العميل.

آه، نقطة جيدة. إذن لم يعد هناك خطأ. شكرًا لك!