Disable account confirm emails when creating users via API

Si el usuario realmente fue creado, el user_id estará en la respuesta. Pero, dado que no puedes encontrar al usuario en el panel de administración, probablemente no se creó por alguna razón.

Ah, vale, así que estás creando un importador. Sin embargo, no deberías hacerlo mediante llamadas a la API, sino crear un script de importación y ejecutarlo directamente desde dentro de tu contenedor Docker.

Te recomiendo revisar uno de los muchos ejemplos disponibles en discourse/script/import_scripts at main · discourse/discourse · GitHub

¿Puedo preguntar por qué?
(Tengo acceso de administrador a Discourse, pero no al servidor/contenedor Docker, por lo que tendría que pedirle a otra persona que lo haga.)

¡Parece que sí! ¿Hay alguna causa conocida para eso? ¿Algo en la configuración?

Es 100 veces más rápido si se trata de una importación grande y obtienes acceso directo a los métodos de la clase ImportScripts::Base que hacen que sea súper fácil crear usuarios y muchas otras cosas para importaciones, como crear grupos, categorías, temas y publicaciones:

Podrías crear el script y pedirles que lo ejecuten si es necesario.

No hay problemas conocidos al respecto. Aquí tienes un ejemplo de solicitud curl para crear un usuario:

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"

que devuelve:

{"success":true,"active":false,"message":"\u003cp\u003e¡Casi has terminado! Hemos enviado un correo de activación a \u003cb\u003ecfbcc77ae9f4230d2c25@example.com\u003c/b\u003e. Por favor, sigue las instrucciones del correo para activar tu cuenta.\u003c/p\u003e\u003cp\u003eSi no llega, revisa tu carpeta de spam.\u003c/p\u003e","user_id":4}

Es posible que algo haya cambiado, ya que parece que ahora se están enviando correos electrónicos, pero el usuario aún se está creando. Parece que active=true no se está aplicando.

1 me gusta

También debo admitir que no tengo conocimientos de Ruby :man_facepalming:

Así que intentaré investigar el problema con la API un poco más. Probaré a realizar una llamada similar a la tuya. Solo necesito aclarar un par de cosas:
a) ¿El punto de acceso es [mydomain]/users.json, correcto?
b) ¿El Content-Type debe ser "multipart/form-data" o "application/json", como se indica en la documentación de la API?
c) ¿Para qué sirven los "user_fields"?

1 me gusta

Sí, por lo general deseas agregar .json a todas las rutas. Sí, también puedes usar application/json para el content-type y los campos de usuario son opcionales, solo formaban parte de mi script de ejemplo que ya tenía.

2 Me gusta

¡Funcionó!

Enviar exactamente la misma solicitud curl que la tuya (con mis datos) resultó en la creación de un usuario activado.
Aún no estoy seguro de por qué no funcionó para mí originalmente cuando enviaba solicitudes similares desde Postman. Investigaré más a fondo este problema y informaré aquí si encuentro algo significativo.

¡Gracias por tu ayuda!

2 Me gusta

Esto se ha resuelto con este commit:

5 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.