Disable account confirm emails when creating users via API

Si l’utilisateur a effectivement été créé, l’user_id sera présent dans la réponse. Cependant, étant donné que vous ne trouvez pas l’utilisateur dans le tableau de bord d’administration, il est probable qu’il n’ait pas été créé pour une raison quelconque.

Ah, d’accord, vous créez donc un outil d’importation. Vous ne devriez pas le faire via des appels API, mais plutôt créer un script d’importation et l’exécuter directement à l’intérieur de votre conteneur Docker.

Je vous recommande de consulter l’un des nombreux exemples répertoriés ici : discourse/script/import_scripts at main · discourse/discourse · GitHub

Puis-je demander pourquoi ?
(J’ai un accès administrateur à Discourse, mais pas au serveur/conteneur Docker, donc je devrais demander à quelqu’un d’autre de le faire.)

Il semble bien ! Y a-t-il des causes connues pour cela ? Quelque chose dans les paramètres ?

C’est 100 fois plus rapide pour une grande importation et vous obtenez un accès direct aux méthodes de la classe ImportScripts::Base qui rendent super facile la création d’utilisateurs et bien d’autres choses pour les importations comme la création de groupes, catégories, sujets et messages :

Vous pourriez créer le script et leur demander de l’exécuter si nécessaire.

Aucun problème connu à ce sujet. Voici un exemple de requête curl pour créer un utilisateur :

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"

qui retourne :

{"success":true,"active":false,"message":"\u003cp\u003eVous êtes presque prêt ! Nous avons envoyé un e-mail d'activation à \u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e. Veuillez suivre les instructions dans l'e-mail pour activer votre compte.\u003c/p\u003e\u003cp\u003eSi vous ne le recevez pas, vérifiez votre dossier spam.\u003c/p\u003e","user_id":4}

Il est possible que quelque chose ait changé car il semble que des e-mails soient envoyés maintenant, mais l’utilisateur est toujours créé. On dirait que active=true n’est pas appliqué.

Je dois aussi admettre que je ne connais pas du tout Ruby :man_facepalming:

Je vais donc essayer d’approfondir l’investigation du problème avec l’API. Je vais tenter d’exécuter un appel similaire au vôtre. Juste quelques points à clarifier :
a) Le point de terminaison est bien [mydomain]/users.json, n’est-ce pas ?
b) Le Content-Type doit-il être "multipart/form-data" ou "application/json", comme indiqué dans la documentation de l’API ?
c) À quoi servent les "user_fields" ?

Oui, en général, vous souhaitez ajouter .json à tous les routes. Oui, vous pouvez également utiliser application/json pour le content-type et les user_fields sont optionnels, c’était juste une partie de mon script d’exemple que j’avais déjà.

Ça a fonctionné !

L’envoi exactement de la même requête curl que la vôtre (avec mes données) a abouti à la création d’un utilisateur activé.
Je ne sais pas encore pourquoi cela ne fonctionnait pas pour moi à l’origine lorsque j’envoyais des requêtes similaires depuis Postman. Je vais enquêter davantage sur ce problème et vous faire un rapport ici si je trouve quelque chose d’important.

Merci pour votre aide !

Cela a été résolu avec ce commit :