Существует ли способ показывать внутренние объявления на основе местоположения текущего пользователя?

Это потому, что он возвращает только содержимое https://your-discourse.com/admin/users/{user_id}.json. Он игнорирует часть ip-info, так как это некорректная конечная точка в данном случае.

И да, я не подумал об этом :person_facepalming:, но да, думаю, вам, вероятно, понадобится ключ Maxmind для получения геолокации.

Итак, подытожим:

  1. Если вы хотите получить IP-адрес пользователя, вам нужно сделать GET-запрос (с учетными данными администратора) к https://your-discourse.com/admin/users/{user_id}.json. Он вернет IP-адрес наряду с другой информацией о пользователе.

  2. Если вы хотите определить местоположение по IP-адресу, вам нужен ключ Maxmind (который нужно добавить в app.yml), и вы должны сделать GET-запрос к этой конечной точке: https://your-discourse.com/admin/users/ip-info.json?ip={user_ip}.

Существует документация по API: https://docs.discourse.org/
Но не все конечные точки перечислены здесь. Однако API Discourse очень легко реверс-инжинирить: Reverse engineer the Discourse API. Именно так я и получил эту информацию.