currentUser.groups non corrisponde alla tabella group_users

Credo che si tratti di un bug, ma sentiti libero di riclassificarlo in Development

Passaggi per riprodurre l’errore

  1. Crea un tema andando su Admin > Temi > Comuni > </head> e incolla quanto segue

    <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. Impersona diversi utenti per verificare quali gruppi ricevi

  3. Vai su Data Explorer (o al DB) ed esegui questa query

    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 gli ID utente che hai impersonato
    GROUP BY
        u.id
    ORDER BY
        u.id
    

Output del 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

Output dell’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 gruppi mancanti

- User id: 6 Group ids: 10, 54 (2) <= 4 gruppi mancanti

L’output del DB è corretto (posso vedere che quegli utenti hanno effettivamente quei gruppi assegnati nell’interfaccia), quindi sembra esserci un problema nell’API. Cosa potrebbe causare il mancato invio di alcuni gruppi a currentUser.groups?

È possibile che i gruppi mancanti siano stati configurati come nascosti agli utenti? In tal caso, non verranno inclusi nell’oggetto currentUser sul client.

4 Mi Piace

Ah, buon punto. Quindi non è più un bug. Grazie!

2 Mi Piace