currentUser.groups não corresponde à tabela group_users

Acredito que isso seja um bug, mas fique à vontade para recategorizá-lo para Dev

Passos para reproduzir

  1. Crie um tema acessando Admin > Temas > Comum > </head> e cole o seguinte

    <script type="text/discourse-plugin" version="0.8.42">
      const currentUser = api.getCurrentUser()
      const groupIds = currentUser.groups.map(x => x.id)
      console.log(`ID do usuário: ${currentUser.id} IDs dos grupos: ${groupIds} (${groupIds.length})`)
    </script>
    
  2. Simule diferentes usuários para ver quais grupos você recebe

  3. Acesse o Data Explorer (ou o banco de dados) e execute a seguinte 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) -- ou os IDs de usuário que você simulou
    GROUP BY
        u.id
    ORDER BY
        u.id
    

Saída do banco de dados

- 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

Saída da API

- ID do usuário: 2 IDs dos grupos: 1, 3, 10, 11, 12, 13, 14, 50, 63, 64, 68 (11)

- ID do usuário: 3 IDs dos grupos: 10, 53, 54, 59, 61, 75, 79, 88 (8) <= 7 grupos ausentes

- ID do usuário: 6 IDs dos grupos: 10, 54 (2) <= 4 grupos ausentes

A saída do banco de dados está correta (posso ver que esses usuários realmente têm esses grupos atribuídos na interface), então parece haver um problema na API. O que poderia estar causando a não transmissão de alguns grupos para currentUser.groups?

É possível que os grupos ausentes tenham sido configurados para ficarem ocultos aos usuários? Se sim, eles não serão incluídos no objeto currentUser no cliente.

Ah, bom ponto. Então não é mais um bug. Obrigado!