currentUser.groups ne correspond pas à la table group_users

Je pense qu’il s’agit d’un bug, mais n’hésitez pas à le reclasser dans Dev si nécessaire.

Étapes pour reproduire le problème

  1. Créez un thème en allant dans Admin > Thèmes > Commun > <head> et collez le code suivant :

    <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. Faites-vous passer pour différents utilisateurs afin de voir quels groupes vous obtenez.

  3. Accédez à l’Explorateur de données (ou à la base de données) et exécutez la requête suivante :

    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 les IDs d'utilisateurs que vous avez imités
    GROUP BY
        u.id
    ORDER BY
        u.id
    

Résultat de la base de données

- 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

Résultat de l’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 groupes manquants

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

Le résultat de la base de données est correct (je peux voir dans l’interface utilisateur que ces utilisateurs ont bien ces groupes attribués), il semble donc y avoir un problème au niveau de l’API. Qu’est-ce qui pourrait empêcher certains groupes d’être envoyés à currentUser.groups ?

Est-il possible que les groupes manquants aient été configurés pour être masqués aux utilisateurs ? Dans ce cas, ils ne seront pas inclus dans l’objet currentUser côté client.

4 « J'aime »

Ah, bonne remarque. Ce n’est donc plus un bug. Merci !

2 « J'aime »