Sincronizza l'appartenenza al gruppo con un elenco esterno di indirizzi email

Qual è il modo più semplice per farlo?

Uno script esterno che viene eseguito ogni notte e utilizza l’API di Discourse?

O esiste già un plugin?

Grazie.

Stai descrivendo probabilmente la soluzione peggiore al tuo problema. Puoi fare un passo indietro e definire il problema?

Cosa mantiene la lista? DiscourseConnect - Single Sign-On ufficiale per Discourse (sso) è una soluzione probabile, anche se potrebbero essercene altre.

Adoro la schiettezza delle persone del settore informatico :slight_smile:

Stavo pensando di provare Mirroring a read-only mailing list in Discourse con una mailing list privata e, di conseguenza, una categoria Discourse privata.

Qual sarebbe il modo migliore? O anche solo un modo leggermente migliore? Se le persone nella lista preferiscono la categoria privata del forum, è una vittoria per Discourse.

Se non hai quegli utenti gestiti in un’applicazione esterna, puoi fare qualcosa di simile:

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

  def update_group
   g=Group.find(43) # qualsiasi ID gruppo desideri
   GroupUser.where(group_id: g.id).destroy_all
   user_emails=load_csv('/path/to/file')
    user_emails.each do |u|
      user = User.find_by_email(u['Email'])
      next unless user
      puts "utente trovato #{uid}"
      GroupUser.find_or_create_by(group_id: g.id, user_id: user.id)
    end
  end

Come implementarlo è un’altra questione. Forse un plugin.

Magari un plugin che aggiunge automaticamente un utente al gruppo se pubblica nella categoria?

Grazie per questo.

La categoria sarebbe visibile solo ai membri del gruppo, quindi ci troveremmo in un paradosso del pollo e dell’uovo!

Sono abbastanza pratico di PHP, quindi penso di poter scrivere uno script che prenda gli indirizzi email da Mailman 2 (che ha uno script Python per questo) e li confronti con l’elenco degli utenti Discourse, aggiungendo o rimuovendo gli utenti Discourse dal gruppo pertinente di conseguenza. So che hai detto che questa è “probabilmente la soluzione peggiore”…

Non ho ancora nemmeno configurato lo specchio della mailing list, quindi per ora sono solo idee.

Sì, ma stavo pensando che potresti importare i dati nell’elenco in qualche altro modo.

Potresti anche configurare il gruppo in modo che accetti richieste e lasciare che sia Discourse a gestirle.

Odio PHP, quindi la tua soluzione sta diventando sempre peggio! :joy:

Però la API di Discourse è abbastanza semplice da capire, quindi penso che la tua soluzione sia quella giusta per te!

Se Mailman ha degli hook, potresti configurarlo per effettuare chiamate API quando aggiorna la lista degli iscritti.

C’è un’impostazione di categoria chiamata qualcosa come «… Riflette un elenco» che potrebbe essere utile anche.