Possiamo inserire gli utenti direttamente in database Discourse separati in modo sicuro?

Ciao a tutti,

Stiamo gestendo più forum Discourse come istanze isolate sulla stessa macchina virtuale. Ogni forum ha il proprio database Postgres separato, ma sono tutti gestiti da uno script condiviso che viene eseguito sulla macchina host.

Stiamo cercando di automatizzare la creazione degli utenti iniziali durante l’installazione. Invece di utilizzare l’API o l’importatore CSV, ci chiediamo:

:light_bulb: È possibile (e sicuro) inserire i record utente direttamente nel database di ciascuna istanza?

Poiché il nostro script interagisce già con i database, questo potrebbe semplificare notevolmente il processo di provisioning.

Qualcuno ha già tentato la creazione diretta di utenti tramite database? O è una cattiva idea a causa dei rischi con l’integrità dei dati, le sessioni o altri meccanismi specifici di Discourse?

Apprezziamo qualsiasi consiglio o esperienza che possiate condividere!

1 Mi Piace

È un po’ più sicuro far fare a Rails piuttosto che modificare il database da soli, ma puoi farlo se vuoi. Tieni presente che devi toccare almeno le tabelle user e user_emails e assicurarti che gli user_id corrispondano.

Dai un’occhiata a discourse/db/fixtures/009_users.rb at main · discourse/discourse · GitHub e poi crea un plugin che aggiunga in modo simile una fixture (magari ./discourse-salesforce/db/fixtures/001_groups.rb).

Potresti anche usare uno script di importazione come esempio.

1 Mi Piace

Grazie, @pfaffman — apprezzo molto la tua guida!

Giusto per chiarire: uno dei motivi principali per cui stiamo esplorando questa strada è che sia il metodo CSV che quello basato su API sono troppo lenti per quello che stiamo cercando di fare. Stiamo avviando molte istanze isolate e dobbiamo popolare ciascuna con un batch di utenti rapidamente durante il provisioning.

L’approccio con fixture/plugin che hai menzionato consentirebbe una creazione di utenti significativamente più veloce rispetto ai metodi API o CSV? Nello specifico, speriamo di ridurre i tempi di attesa durante l’impostazione — idealmente qualcosa che venga eseguito istantaneamente o quasi istantaneamente insieme all’impostazione iniziale del DB.

Grazie ancora!

1 Mi Piace

Puoi consultare gli script di importazione bulk per esempi di aggiornamento diretto del database. Lo script di importazione ha un certo overhead, quindi forse l’esempio nei fixture potrebbe essere più veloce?

Quanti utenti stai aggiungendo? Hai gli stessi utenti per ogni sito?