Identifier les utilisateurs dans plusieurs groupes en utilisant AND plutôt que OR ?OR ?OR ?OR ?

Créer un nouveau groupe qui contient les utilisateurs du groupe cible ayant le niveau de confiance 3 est la seule façon que je puisse imaginer pour y parvenir. Discourse ne dispose pas de règle ET qui puisse être utilisée avec les autorisations de sécurité de catégorie. Une question similaire s’est posée à quelques reprises concernant la création d’une règle de catégorie qui exclut les membres d’un ou plusieurs groupes.

Si le plugin Data Explorer est disponible sur votre site, vous pourriez utiliser une requête Data Explorer qui renvoie une liste de tous les utilisateurs du groupe cible ayant le niveau de confiance 3. Si vous n’avez pas affaire à un grand nombre d’utilisateurs, vous devriez pouvoir copier/coller les noms d’utilisateur renvoyés par la requête directement dans le formulaire Ajouter des utilisateurs d’un groupe. Discourse semble gérer l’ajout de noms d’utilisateur qui existent déjà dans un groupe dans ce formulaire, donc si vous exécutez la requête périodiquement, vous devriez pouvoir continuer à copier les noms d’utilisateur renvoyés dans le formulaire Ajouter des utilisateurs du groupe. Notez que je ne suis pas sûr du nombre maximum de noms d’utilisateur qui peuvent être collés dans le formulaire. Je viens de le tester avec 80 utilisateurs et cela fonctionne sans problème. De plus, si vous essayez de coller une liste de noms d’utilisateur exactement identique dans le formulaire Ajouter des utilisateurs, Discourse semble renvoyer une erreur. L’erreur peut cependant être ignorée.

Voici la requête que j’ai testée. Vous devez fournir le nom du groupe, par exemple ‘year_2’, avant d’exécuter la requête.

--[params]
-- string :group_name

SELECT u.username
FROM group_users gu
JOIN groups g ON g.id = gu.group_id
JOIN users u ON u.id = gu.user_id
WHERE g.name = :group_name
AND u.trust_level = 3

Il serait possible d’automatiser le processus ci-dessus en exécutant la requête Data Explorer via l’API, puis en utilisant les résultats de la requête API pour mettre à jour le groupe. Les détails à ce sujet se trouvent ici : Exécuter des requêtes Data Explorer avec l’API Discourse. Vous devriez ensuite mettre à jour les membres du groupe via l’API.

Il serait intéressant de pouvoir effectuer certains types d’actions directement sur les résultats d’une requête Data Explorer. Par exemple, avec une requête qui renvoie une liste de noms d’utilisateur, ajouter tous les utilisateurs à un groupe sans avoir à passer par l’étape de copier/coller.

4 « J'aime »