Synchroniser l'appartenance aux groupes avec une liste externe d'adresses e-mail

Quelle serait la méthode la plus simple pour faire cela ?

Un script externe qui s’exécute chaque nuit et utilise l’API de Discourse ?

Ou existe-t-il déjà un plugin ?

Merci.

Vous décrivez probablement la pire solution possible à votre problème. Pouvez-vous faire un pas en arrière et définir le problème ?

Qu’est-ce qui maintient la liste ? DiscourseConnect - SSO officiel pour Discourse est une solution probable, bien qu’il puisse en exister d’autres.

J’adore la franchise des gens de l’informatique :slight_smile:

Je songeais à essayer Mirroring a read-only mailing list in Discourse avec une liste de diffusion privée et donc une catégorie Discourse privée.

Quelle serait la meilleure approche ? Ou même une approche légèrement meilleure ? Si les personnes sur la liste préfèrent la catégorie privée du forum, c’est une victoire pour Discourse.

Si vous ne gérez pas ces utilisateurs dans une application externe, vous pourriez faire quelque chose comme ceci :

  def load_csv(path)
    CSV.parse(File.read(path), headers: true)
  end

  def update_group
   g = Group.find(43) # l'ID du groupe que vous souhaitez
   GroupUser.where(group_id: g.id).destroy_all
   user_emails = load_csv('/chemin/vers/le/fichier')
    user_emails.each do |u|
      user = User.find_by_email(u['Email'])
      next unless user
      puts "utilisateur trouvé #{uid}"
      GroupUser.find_or_create_by(group_id: g.id, user_id: user.id)
    end
  end

La manière exacte de procéder est un tout autre sujet. Peut-être un plugin.

Peut-être un plugin qui ajoute automatiquement un utilisateur au groupe s’il publie dans la catégorie ?

Merci pour cela.

La catégorie ne serait visible que par les membres du groupe, ce qui créerait un dilemme du « poulet et l’œuf » !

Je suis assez familier avec PHP, donc je pense pouvoir écrire un script qui récupère les adresses e-mail de Mailman 2 (il existe un script Python pour cela) et les compare à la liste des utilisateurs de Discourse, ajoutant ou supprimant les utilisateurs de Discourse du groupe concerné selon le cas. Je sais que vous avez dit que c’était « probablement la pire solution »…

Je n’ai même pas encore configuré le miroir de la liste de diffusion, donc ce ne sont pour l’instant que des idées.

Oui, mais je pensais que vous importeriez les données dans la liste par un autre moyen.

Vous pourriez également autoriser les demandes au sein du groupe et laisser Discourse s’en charger.

Je déteste PHP, alors ta solution commence à me sembler de moins en moins bonne ! :joy:

Mais l’API de Discourse est assez simple à comprendre, donc je pense que ta solution est en fait la plus adaptée pour toi !

Si Mailman propose des hooks, tu pourrais le configurer pour qu’il effectue des appels API lorsqu’il met à jour la liste des abonnés.

Il existe un paramètre de catégorie intitulé quelque chose comme « … Miroir d’une liste » qui pourrait également être utile.