Disable account confirm emails when creating users via API

ユーザーが実際に作成されていれば、レスポンスに user_id が含まれます。しかし、管理ダッシュボードでユーザーが見つからない場合、何らかの理由で作成されなかった可能性があります。

ああ、なるほど。インポーターを作成しようとしているのですね。API呼び出しで行うのではなく、インポータースクリプトを作成し、Dockerコンテナ内部から直接実行したいと考えているのですね。

discourse/script/import_scripts at main · discourse/discourse · GitHub に掲載されている多数の例のいずれかを参照することをお勧めします。

その理由を伺ってもよろしいでしょうか?
(Discourse への管理者アクセスはありますが、サーバーや Docker コンテナへのアクセスはないため、他の人に依頼する必要があります。)

そのようです!その原因として既知のものや、設定に何か問題があるのでしょうか?

大規模なインポートの場合、100 倍高速になります。また、ImportScripts::Base クラスのメソッドに直接アクセスできるため、ユーザーの作成や、グループ、カテゴリ、トピック、投稿の作成など、インポート関連の作業が非常に簡単になります。

必要であれば、スクリプトを作成して実行してもらうことも可能です。

これに関連する既知の問題はありません。ユーザーを作成する curl リクエストの例を以下に示します。

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"

返されるレスポンスは以下の通りです。

{"success":true,"active":false,"message":"\u003cp\u003eあと少しです!\u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e へアクティベーションメールを送信しました。アカウントを有効化するには、メール内の手順に従ってください。\u003c/p\u003e\u003cp\u003eメールが届かない場合は、スパムフォルダを確認してください。\u003c/p\u003e","user_id":4}

現在はメールが送信されているようですが、ユーザーは作成されたままになっているため、何らかの変更があった可能性があります。active=true が適用されていないようです。

また、Ruby については全く知識がないことも付け加えておきます :man_facepalming:

そのため、API の問題についてもう少し詳しく調査してみます。あなたと同じような呼び出しを実行してみます。いくつか確認したい点があります:
a) エンドポイントは [mydomain]/users.json で合っていますか?
b) Content-Type は "multipart/form-data" または "application/json" のどちらにするべきですか?API ドキュメントに記載されている通り
c) "user_fields" は何のためにあるのでしょうか?

はい、通常、すべてのルートに .json を追加します。はい、content-type として application/json を使用することもできますし、user_fields はオプションです。これは私がすでに持っていたサンプルスクリプトの一部でした。

動作しました!

あなたの curl リクエストと全く同じもの(私のデータ付き)を送信したところ、アクティブ化されたユーザーが作成されました。
当初、Postman から類似のリクエストを送信した際に動作しなかった理由はまだ不明です。この件についてさらに調査し、重要な発見があればここで報告します。

ご支援いただき、ありがとうございます!

この問題は、以下のコミットで解決されています: