Я считаю, что это ошибка, но вы можете перекатегоризировать её в Development
Шаги для воспроизведения
-
Создайте тему, перейдя в Администрирование > Темы > Общие >
</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> -
Симулируйте вход разных пользователей, чтобы проверить, какие группы вы получаете.
-
Перейдите в 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?
