currentUser.groups no coincide con la tabla group_users

Creo que esto es un error, pero si lo prefieres, puedes recategorizarlo como Dev.

Pasos para reproducir

  1. 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>
    
  2. Suplanta a diferentes usuarios para ver qué grupos obtienes.

  3. 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?

¿Es posible que los grupos faltantes se hayan configurado para estar ocultos a los usuarios? De ser así, no se incluirán en el objeto currentUser en el cliente.

4 Me gusta

Ah, buen punto. Ya no es un error entonces. ¡Gracias!

2 Me gusta