Idealmente, me gustaría establecer el grupo principal cuando invito a un usuario al grupo al que lo estoy agregando en la invitación, pero no veo una forma de hacerlo. ¿Hay alguna forma a través de la API de establecer el grupo principal para un usuario?
Gracias por la sugerencia. Intenté usarla. Actualicé el primary_group_name, el primary_group_id e incluso la entrada del array groups para que sea ['primary_group'] = true. Obtengo un 200 al llamar a update_user usando la gema, pero todavía no funciona. Le echaré un vistazo más de cerca mañana, a ver si hay alguna indicación de lo que está saliendo mal. Sin embargo, no vi nada obvio.
Este es el código que ejecuté y obtuve un código 200 del servidor:
client = DiscourseApi::Client.new("https://myforumurl.example.com")
client.api_key = 'una clave api con permisos globales para probar esto'
client.api_username = 'mi nombre de usuario administrador -- creo que esto no importa'
user = client.user('joepowell')
user['primary_group_name'] = 'dojo'
user['primary_group_id'] = 42
# este es el grupo 42 en el array de grupos
user['groups'][2]['primary_group'] = true
client.update_user('joepowell', user)
Pude usar el siguiente código ruby para actualizar el id del grupo principal. Todavía no parece estar soportado a través del gem (busqué en el código referencias a primary_group_id y no vi ninguna que pareciera funcionar de esta manera).
require 'curb'
http = Curl.put('https://yourforum.com/admin/users/###user_id###/primary_group?primary_group_id=###group_id###') do | http |
http.headers['Api-Key'] = 'your-api-key';
http.headers['Api-Username'] = 'your-api-username';
http.headers['Content-Type'] = 'application/x-www-form-urlencoded'
end
ahh genial, gracias. Pensé que podría hacer una solicitud de extracción (pull request) después de actualizar el código aquí:
pero estoy muy metido en esto ahora mismo para ponerlo en marcha, así que pasará un tiempo antes de que me ponga a hacer cambios en el código de Discourse en sí. Sin embargo, me encanta Discourse. Jugué brevemente con Flarum por recomendación de alguien que no será nombrado, y francamente no hay comparación, Discourse está en otra liga para cualquiera que quiera hacer algo fuera de lo común.
¿Es ese usuario un administrador? Mi mejor suposición es que es un problema de permisos. Uno o más de: El usuario es incorrecto, la clave es incorrecta, los permisos para la clave son incorrectos.