이것은 버그인 것 같습니다. 원하시면 Development 카테고리로 재분류해 주세요.
재현 방법
-
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> -
다른 사용자로 위장(Impersonate)하여 어떤 그룹을 받게 되는지 확인합니다.
-
Data Explorer(또는 DB)로 이동하여 아래 쿼리를 실행합니다.
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
DB 출력
- 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개 그룹 누락
DB 출력은 정확합니다(UI에서 해당 사용자에게 해당 그룹이 할당되어 있는 것을 확인할 수 있습니다). 따라서 API에 문제가 있는 것으로 보입니다. 어떤 원인으로 인해 일부 그룹이 currentUser.groups에 전송되지 않는 것일까요?
