Disable account confirm emails when creating users via API

Se l’utente è stato effettivamente creato, l’user_id sarà presente nella risposta. Ma considerando che non riesci a trovare l’utente nella dashboard di amministrazione, probabilmente non è stato creato per qualche motivo.

Ah, ok, quindi stai creando un importatore. In questo caso non dovresti farlo tramite chiamate API, ma dovresti creare uno script di importazione ed eseguirlo direttamente all’interno del tuo container Docker.

Ti consiglio di dare un’occhiata a uno dei molti esempi elencati in discourse/script/import_scripts at main · discourse/discourse · GitHub

Posso chiederti il motivo?
(Ho accesso amministrativo a Discourse, ma non al server/container Docker, quindi dovrei chiedere a qualcun altro di farlo.)

Sembra proprio! Ci sono cause note per questo? Qualcosa nelle impostazioni?

È 100 volte più veloce se si tratta di un’importazione di grandi dimensioni e si ottiene l’accesso diretto ai metodi della classe ImportScripts::Base che rendono super semplice creare utenti e molte altre cose per le importazioni, come la creazione di gruppi, categorie, argomenti e post:

Potresti creare lo script e far sì che lo eseguano se necessario.

Nessun problema noto in merito. Ecco un esempio di richiesta curl per creare un utente:

curl -i -sS -X POST "http://localhost:3000/users" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: ****" \
-H "Api-Username: system" \
-F "name=cfbcc77ae9f4230d2c25" \
-F "username=cfbcc77ae9f4230d2c25" \
-F "email=cfbcc77ae9f4230d2c25@example.com" \
-F "password=3f348653105f05505f5f1a3ff70ef984" \
-F "active=true" \
-F "user_fields[1]=cfbcc77ae9f4230d2c25" \
-F "user_fields[2]=828c0ec3a76"

che restituisce:

{"success":true,"active":false,"message":"\u003cp\u003eSei quasi arrivato alla fine! Abbiamo inviato una mail di attivazione a \u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e. Segui le istruzioni nella mail per attivare il tuo account.\u003c/p\u003e\u003cp\u003eSe non arriva, controlla la cartella spam.\u003c/p\u003e","user_id":4}

È possibile che qualcosa sia cambiato, dato che sembra che le email vengano inviate ora, ma l’utente viene comunque creato. Sembra che active=true non venga applicato.

Devo anche ammettere che non ho alcuna conoscenza di Ruby :man_facepalming:

Quindi proverò a indagare ulteriormente sul problema con l’API. Cercherò di eseguire una chiamata simile alla tua. Solo alcune cose da chiarire:
a) L’endpoint è [mydomain]/users.json, giusto?
b) Il Content-Type dovrebbe essere "multipart/form-data" o "application/json", come indicato nella documentazione API?
c) A cosa servono i "user_fields"?

Sì, di solito si desidera aggiungere .json a tutte le rotte. Sì, è possibile utilizzare anche application/json per il content-type e i campi utente sono opzionali, facevano semplicemente parte del mio script di esempio che avevo già.

Ha funzionato!

Inviando esattamente la stessa richiesta curl della tua (con i miei dati) è stato creato un utente attivato.
Non sono ancora sicuro del motivo per cui non ha funzionato per me inizialmente quando inviavo richieste simili da Postman. Continuerò a investigare questo problema e riferirò qui se troverò qualcosa di significativo.

Grazie per il tuo aiuto!

Ciò è stato risolto con questo commit: