¿Cómo obtener todos los mensajes más recientes/destacados en categorías no privadas?

Aquí está mi situación: Estoy usando Discourse a través de SSO. Es posible que un miembro de mi sitio principal nunca haya visitado los foros (aún), pero quiero mostrarles los temas más recientes o populares para incitarlos a hacer clic y ver lo que se están perdiendo.

Sin embargo, hasta que ingresen al foro por primera vez, no tienen un perfil en Discourse. (Este se crea en el inicio de sesión inicial, ya que así está diseñado para funcionar el SSO.)

Esto genera un problema: si le pido a Discourse la última actividad, o bien debo especificar un usuario válido (que en este caso no existe), o bien obtengo una lista que incluye temas que pueden estar en categorías privadas (protegidas por grupo).

Actualmente, lo manejo teniendo una lista codificada de qué categorías deben excluirse, y recorro la lista para excluir cualquier tema que esté en esas categorías. Pero no es lo ideal. Además, los temas fijados (“Bienvenido a los nuevos foros” y similares) siempre terminan en la parte superior de la lista… lo cual, supongo que también puedo filtrarlos… pero todo esto se siente muy hackeado. :slight_smile:

¿Tienen alguna sugerencia para lograr lo que intento de una manera más elegante?

¿Podrías volver a los feeds (latest.rss/top.rss)?

Esa es una idea ingeniosa, pero creo que no funcionará para mí, ya que mi foro es completamente privado. Así que si intento obtener el feed RSS sin tener una sesión válida de Discourse, me redirige a una página de inicio de sesión.

¿Entonces crearías un usuario de prueba con el nivel mínimo de acceso y usarías sus vistas como respaldo?

Crea un nuevo usuario sin pertenencia a ningún grupo especial y realiza solicitudes de API para lo más reciente utilizando este usuario sin privilegios.

Hmm, no está mal. Todavía es un poco chapucero, pero creo que es un poco menos chapucero que lo que estoy haciendo ahora. Mantener un “usuario básico fantasma” significa, al menos, que no tengo que mantener manualmente una lista de IDs de categorías de Discourse en el código de mi sitio principal.