No se puede crear una clave de API de nivel "Single User", siempre se establece por defecto en "All Users"

Pasos para replicar:

  1. Abre https://tudominio-de-discourse.com/admin/api/keys
  2. Selecciona una nueva clave
  3. Elige “usuario único” como nivel de usuario
  4. Crea la clave
  5. Abre los detalles de la clave después de su creación
  6. El nivel de usuario aparecerá como “Todos los usuarios”

No me queda muy clara la diferencia entre las dos opciones de nivel de usuario, pero esto parece ser claramente un error.

(Estoy utilizando el servicio de Discourse alojado)

¿También seleccionaste un usuario para crear la clave de API?

Generalmente, lo que necesitas es una clave de API de «todos los usuarios». Para algunas cosas, sobre todo al usar discourse_theme, se requiere una clave de usuario.

¿Qué intentas hacer con la API?

1 me gusta

Puedo reproducir el problema si sigo los pasos que has enumerado. Al crear una clave de API para un solo usuario, Discourse espera que se agregue un nombre de usuario al campo ‘Usuario’ del formulario:

Si se selecciona ‘Usuario único’ como nivel de usuario, pero no se agrega ningún nombre de usuario al campo ‘Usuario’, se crea una clave de API para todos los usuarios. Esperaría que se mostrara un mensaje de error en su lugar, similar a lo que ocurre cuando se envía el formulario sin una descripción.

3 Me gusta

Quería crear un tipo de usuario “bot” para recuperar publicaciones de categorías específicas. Esta instancia de Discourse utiliza únicamente la autenticación de GSuite, por lo que ya no es posible crear usuarios arbitrarios. Esperaba que, al generar una clave de “Usuario único”, me permitiera ingresar el nuevo nombre de usuario que deseaba asignar al bot, pero ahora veo que el nombre de usuario debe corresponder a un usuario existente. El campo de entrada del nombre de usuario no tiene validación, por lo que no quedaba claro que no se podía ingresar cualquier nombre (como haría, por ejemplo, con los webhooks entrantes de Slack). Luego, al enviar el formulario, falla silenciosamente al buscar el nombre de usuario ingresado y, en su lugar, crea una clave de “Todos los usuarios”.

Supongo que esto es más un error de usabilidad que funcional. Encontré la documentación aquí confusa, ya que no explicaba en absoluto el campo “Nivel de usuario” y no se mencionaba ningún tipo “Todos los usuarios”, salvo en un comentario más abajo en el hilo.

Una clave de API para todos los usuarios funcionaría, a menos que quieras que el «bot» no pueda leer algunas categorías.

¿Es este tu componente selector de nombre de usuario @j.jaffeux?

No, esto no es un componente select-kit. El problema es que solo verificamos si la descripción está presente, no el nombre de usuario. El userMode (single/all) es solo un valor del lado del cliente, por lo que cuando el modelo se valida en el servidor, todo lo que sabe es que solicitamos una clave y si proporcionamos un usuario o no.

Eso debería mejorar la situación; le pediré a David que lo revise:

7 Me gusta