Sincronizar associação de grupo com lista externa de endereços de e-mail

Qual seria a maneira mais fácil de fazer isso?

Um script externo que roda todas as noites e usa a API do Discourse?

Ou já existe um plugin que faça isso?

Obrigado.

Você está descrevendo provavelmente a pior solução para o seu problema. Pode dar um passo para trás e definir o problema?

O que está mantendo a lista? DiscourseConnect - Single Sign-On oficial para Discourse (sso) é uma solução provável, embora possam existir outras.

Adoro a franqueza das pessoas de computação :slight_smile:

Estava pensando em experimentar Mirroring a read-only mailing list in Discourse com uma lista de e-mails privada e, portanto, uma categoria privada no Discourse.

Qual seria a melhor maneira? Ou até mesmo uma maneira um pouco melhor? Se as pessoas na lista preferirem a categoria privada do fórum, então é uma vitória para o Discourse.

Se você não tiver esses usuários gerenciados em algum aplicativo externo, pode fazer algo assim:

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

  def update_group
   g=Group.find(43) # qualquer ID de grupo que você deseje
   GroupUser.where(group_id: g.id).destroy_all
   user_emails=load_csv('/caminho/para/o/arquivo')
    user_emails.each do |u|
      user = User.find_by_email(u['Email'])
      next unless user
      puts "usuário encontrado #{uid}"
      GroupUser.find_or_create_by(group_id: g.id, user_id: user.id)
    end
  end

Apenas como fazer isso é uma questão completamente diferente. Talvez um plugin.

Talvez um plugin que adicione automaticamente um usuário ao grupo se ele postar na categoria?

Obrigado por isso.

A categoria só seria visível para membros do grupo, então teríamos um cenário de “ovo e galinha” aqui!

Estou bastante familiarizado com PHP, então acho que poderia escrever um script que pegue os endereços de e-mail do Mailman 2 (que possui um script Python para isso) e os verifique na lista de usuários do Discourse, adicionando ou removendo usuários do Discourse do grupo relevante conforme necessário. Sei que você disse que isso é “provavelmente a pior solução”…

Ainda nem configurei o espelho da lista de e-mails, então essas são apenas ideias até agora.

Sim, mas eu estava pensando que você estaria importando dados para a lista de alguma outra maneira.

Você também poderia permitir que o grupo recebesse solicitações e deixar que o Discourse lidasse com isso.

Eu odeio PHP, então sua solução está soando pior! :joy:

Mas a API do Discourse é bem fácil de entender, então acho que sua solução está parecendo a certa para você!

Se o Mailman tiver ganchos, você poderia configurá-lo para fazer chamadas à API quando atualizar a lista de assinantes.

Existe uma configuração de categoria chamada algo como ‘… Espelha uma lista’ que também pode ser útil.