Disable account confirm emails when creating users via API

Wenn der Benutzer tatsächlich erstellt wurde, befindet sich die user_id in der Antwort. Da Sie den Benutzer jedoch im Admin-Dashboard nicht finden können, wurde er wahrscheinlich aus irgendeinem Grund nicht erstellt.

Ah, okay, Sie erstellen also einen Importer. Sie sollten dies jedoch nicht über API-Aufrufe tun, sondern ein Importer-Skript erstellen und direkt innerhalb Ihres Docker-Containers ausführen.

Ich würde mir eines der zahlreichen Beispiele unter discourse/script/import_scripts at main · discourse/discourse · GitHub ansehen.

Darf ich fragen, warum?
(Ich habe Admin-Zugriff auf Discourse, aber nicht auf den Server/Docker-Container, also müsste ich jemand anderen bitten, das zu übernehmen.)

Scheint so! Gibt es bekannte Ursachen dafür? Etwas in den Einstellungen?

Es ist 100-mal schneller, wenn es sich um einen großen Import handelt, und Sie erhalten direkten Zugriff auf die Methoden der Klasse ImportScripts::Base, die es super einfach machen, Benutzer zu erstellen und viele andere Dinge für Importe wie das Erstellen von Gruppen, Kategorien, Themen und Beiträgen:

Sie könnten das Skript erstellen und es bei Bedarf von einer anderen Person ausführen lassen.

Es sind keine bekannten Probleme in diesem Zusammenhang bekannt. Hier ist ein Beispiel für eine curl-Anfrage, um einen Benutzer zu erstellen:

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"

Die Antwort lautet:

{"success":true,"active":false,"message":"\u003cp\u003eSie sind fast fertig! Wir haben eine Aktivierungs-E-Mail an \u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e gesendet. Bitte folgen Sie den Anweisungen in der E-Mail, um Ihr Konto zu aktivieren.\u003c/p\u003e\u003cp\u003eFalls sie nicht ankommt, überprüfen Sie Ihren Spam-Ordner.\u003c/p\u003e","user_id":4}

Es ist möglich, dass sich etwas geändert hat, da es so aussieht, als würden E-Mails jetzt gesendet, aber der Benutzer wird trotzdem erstellt. Es scheint, als würde active=true nicht angewendet.

Ich muss auch zugeben, dass ich keine Ahnung von Ruby habe :man_facepalming:

Daher werde ich versuchen, das Problem mit der API etwas genauer zu untersuchen. Ich werde versuchen, einen Aufruf ähnlich wie deiner durchzuführen. Nur ein paar Dinge zur Klärung:
a) Ist der Endpunkt [mydomain]/users.json?
b) Sollte der Content-Type "multipart/form-data" oder "application/json" sein, wie in der API-Dokumentation beschrieben?
c) Wofür sind "user_fields"?

Ja, normalerweise möchten Sie an alle Routen .json anhängen. Ja, Sie können auch application/json für den Content-Type verwenden, und die user_fields sind optional. Sie waren nur Teil meines Beispiel-Skripts, das ich bereits hatte.

Es hat funktioniert!

Das Senden exakt derselben curl-Anfrage wie bei Ihnen (mit meinen Daten) hat zur Erstellung eines aktivierten Benutzers geführt.
Ich bin mir noch nicht sicher, warum es bei mir ursprünglich nicht funktioniert hat, als ich ähnliche Anfragen von Postman aus gesendet habe. Ich werde dieses Problem weiter untersuchen und hier berichten, falls ich etwas Bedeutendes finde.

Vielen Dank für Ihre Hilfe!

Dies wurde mit diesem Commit behoben: