Creo que esto es un error, pero si lo prefieres, puedes recategorizarlo como Dev.
Pasos para reproducir
-
Crea un tema yendo a Administración > Temas > Común >
</head>y pega esto:<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> -
Suplanta a diferentes usuarios para ver qué grupos obtienes.
-
Ve al Explorador de Datos (o a la base de datos) y ejecuta esta consulta:
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) -- o los IDs de usuario que hayas suplantado GROUP BY u.id ORDER BY u.id
Salida de la BD
- 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
Salida de la 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 grupos faltantes
- User id: 6 Group ids: 10, 54 (2) <= 4 grupos faltantes
La salida de la BD es correcta (puedo ver en la interfaz que esos usuarios tienen asignados esos grupos), por lo que parece haber un problema en la API. ¿Qué podría estar causando que algunos grupos no se envíen a currentUser.groups?
