currentUser.groups не совпадает с таблицей group_users

Я считаю, что это ошибка, но вы можете перекатегоризировать её в Development

Шаги для воспроизведения

  1. Создайте тему, перейдя в Администрирование > Темы > Общие > </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) -- или любые другие ID пользователей, которых вы симулировали
    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 на стороне клиента.

А, хорошее замечание. Значит, это уже не баг. Спасибо!