Как получить все последние/лучшие сообщения в непубличных категориях?

Вот моя ситуация: я использую Discourse через SSO. Пользователь моего основного сайта может еще ни разу не посещать форум, но я хочу показать ему самые свежие и популярные темы, чтобы побудить его кликнуть и узнать, что он упускает.

Однако до тех пор, пока он не зайдет на форум впервые, у него нет профиля Discourse. (Он создается при первом входе, так как SSO работает именно так.)

Это приводит к проблеме: если я запрашиваю у Discourse последние активности, мне либо нужно указать валидного пользователя (которого в данном случае нет), либо я получаю список, включающий темы из приватных категорий (защищенных группами).

В настоящее время я решаю это, имея жестко заданный список категорий, которые следует исключить, и прохожусь по нему, исключая любые темы, находящиеся в этих категориях. Но это не идеально. И закрепленные темы («Добро пожаловать на новый форум» и подобные) всегда оказываются вверху списка… Что ж, я могу отфильтровать и их, но всё это кажется очень костыльным решением. :slight_smile:

Есть ли предложения по более элегантному способу достичь того, что я пытаюсь сделать?

Можно вернуться к ленте (latest.rss/top.rss)?

Это умная идея, но я думаю, что она не сработает для меня, поскольку мой форум полностью приватный. Поэтому, если я попытаюсь получить RSS-ленту без действующей сессии Discourse, меня перенаправит на страницу входа.

Затем создайте тестового пользователя с минимальным уровнем доступа и используйте его представления в качестве запасного варианта?

Создайте нового пользователя без членства в специальных группах и выполните API-запросы для получения последних данных с использованием этого непривилегированного пользователя.

Хм, это неплохо. Всё ещё немного кустарно, но, думаю, чуть менее кустарно, чем то, что я делаю сейчас. Оставление «фантомного базового пользователя» означает, что, по крайней мере, мне не нужно вручную поддерживать список ID категорий Discourse в коде моего основного сайта.