Ajouter des utilisateurs existants (et en inviter de nouveaux) à un groupe

J’ai un cas d’usage spécifique et je voudrais savoir s’il existe un moyen plus simple de le réaliser.

  • Tous nos utilisateurs (via notre SSO) n’ont pas de compte forum actif
  • Nous devons régulièrement ajouter des utilisateurs à un groupe de forum pour leur donner accès à un forum privé
  • On ne sait pas si les utilisateurs ont un compte forum actif avant de tenter de les ajouter au groupe

Par exemple :
Chaque mois, un membre du personnel dispose d’une liste de plus de 100 comptes éligibles pour l’accès au forum privé. Ces comptes ont des noms d’utilisateur SSO et des adresses e-mail, mais ils n’ont peut-être pas encore de compte forum.

:question : Existe-t-il un moyen simple d’ajouter des personnes à un groupe si elles ont déjà un compte forum, et de les inviter au forum (ce qui les ajoute automatiquement au groupe) si ce n’est pas le cas ?

Sur la page des Groupes, le bouton Ajouter des membres permet de coller une liste de noms d’utilisateur séparés par des virgules. Lorsque ces noms d’utilisateur sont valides, les utilisateurs sont ajoutés au groupe. Si un nom d’utilisateur n’est pas valide (c’est-à-dire qu’aucun compte forum n’existe encore), l’opération échoue et l’utilisateur n’est pas ajouté.

À part parcourir manuellement la liste des utilisateurs ajoutés avec succès au groupe, identifier quels noms d’utilisateur n’ont pas été ajoutés, puis envoyer une invitation forum à ces personnes (par exemple (Superseded) Multiple Use Invite Links) - existe-t-il un moyen simple de combiner l’invitation et l’ajout au groupe pour un mélange d’utilisateurs actuels et potentiels du forum ?

Idéalement, je souhaiterais trouver une méthode en une seule étape pour réaliser cela.

Une solution de contournement possible (mais encore très lourde !) pourrait consister en plusieurs étapes :

  1. Saisir la liste des noms dans une requête Data Explorer qui renvoie les listes des noms d’utilisateurs actifs et inactifs.
  2. Utiliser l’option « Ajouter au groupe » pour la liste des noms d’utilisateurs actifs.
  3. Envoyer un lien d’invitation personnalisé à tous les utilisateurs inactifs.

S’il existe un moyen de simplifier cela, je suis tout ouïe :slight_smile:

Vous ne pourrez pas utiliser l’explorateur de données. C’est un outil en lecture seule.

Une chose comme cela devrait être créée de nouveau.

Avez-vous envisagé d’ajouter des utilisateurs aux groupes Discourse en utilisant les paramètres SSO add_groups et remove_groups ? Pour les utilisateurs qui existent sur votre site fournisseur SSO, vous pouvez créer des comptes Discourse pour eux et les ajouter à des groupes Discourse en effectuant un appel API vers la route sync_sso. Vous trouverez des détails sur la configuration de cela ici : Synchroniser les données utilisateur SSO avec la route sync_sso. Nous pouvons vous fournir plus de détails sur la mise en place si cela semble être une approche qui pourrait vous convenir.

1 « J'aime »

Merci Simon, cela semble prometteur.

Tous nos utilisateurs existent sur le site SSO (ce sont des vendeurs sur nos places de marché), mais seule une sous-partie d’entre eux crée actuellement des comptes Discourse pour utiliser nos forums. Ce SSO couvre à la fois les clients et les vendeurs : nous ne souhaiterions pas créer automatiquement des comptes Discourse pour tous les clients (ils sont beaucoup trop nombreux !), mais le faire pour tous les vendeurs simplifierait considérablement les choses.

Dans ce cas, nous devons accorder l’accès aux groupes de forums privés uniquement à certains vendeurs spécifiques, lorsqu’ils commencent à utiliser des places de marché ou des services particuliers.

Par exemple : un vendeur sur la Place de marché 1 possède un compte SSO. Il pourrait créer un compte Discourse à ce stade en se connectant aux forums.

Plus tard, ce vendeur obtient l’accès à la Place de marché 2, et son compte SSO enregistrera ce changement. Nous disposons d’un groupe d’utilisateurs personnalisé (et d’une catégorie de forum privée) pour cette place de marché.

  • S’il possède déjà un compte Discourse à ce stade, nous devrons mettre à jour ses groupes afin qu’il puisse voir la zone du forum privée.
  • S’il ne possède pas encore de compte Discourse, nous aimerions en créer un pour lui avec les groupes pertinents.

L’équipe utilise actuellement la fonction « ajouter au groupe » avec une liste d’identifiants d’utilisateurs séparés par des virgules. Si les utilisateurs ont déjà un compte Discourse, ils obtiennent l’accès au groupe… s’ils ne sont pas encore sur les forums, cela ne fait rien.

Pour rattraper les utilisateurs qui ont créé leurs comptes Discourse depuis la dernière fois qu’un lot a été ajouté au groupe, l’équipe inclut généralement tous les identifiants d’utilisateurs éligibles des X derniers mois lors de la tentative de mise à jour de l’appartenance au groupe, ce qui est un processus assez lourd.

Si vous effectuez un appel API vers la route sync_sso incluant le paramètre SSO add_groups, les utilisateurs existants seront ajoutés au groupe. Si l’utilisateur n’a pas encore de compte Discourse, un compte sera créé pour lui et il sera ajouté au groupe. Vous pouvez utiliser le paramètre SSO remove_groups de manière similaire pour retirer des utilisateurs des groupes. Un autre avantage d’utiliser la route sync_sso pour cela est qu’il n’est pas nécessaire que l’utilisateur se déconnecte puis se reconnecte à Discourse pour que le changement prenne effet.

Si consulter un exemple de code PHP/WordPress serait utile pour votre équipe, vous pouvez voir cette implémentation ici : https://github.com/discourse/wp-discourse/blob/master/lib/utilities.php#L378. Le fichier auquel j’ai lié contient des fonctions utilitaires que les sites peuvent utiliser pour étendre le plugin WP Discourse. C’est la raison pour laquelle il utilise des fonctions statiques.

4 « J'aime »

Merci Simon ! Cela semble idéal, beaucoup mieux que notre méthode actuelle :slight_smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.