Вход в статический сайт Shared Discourse

Всем привет,

Вот моя ситуация. Я пытаюсь установить Discourse на talk.example.com, сохраняя при этом веб-сайт на www.example.com. Мне нужно, чтобы при входе в систему на сайте Discourse пользователь автоматически входил и на сайте www. Если они выходят из системы на сайте Discourse, они должны выходить и с www. Я много читал на эту тему здесь, и общий ответ, похоже, заключается в использовании SSO. Я не думаю, что это сработает в моей ситуации, и вот почему.

Сайт на www.example.com — это статический веб-сайт, созданный с помощью Hugo. Для тех, кто не знает, это аналог Jekyll. Таким образом, у него нет базы данных или какого-либо бэкенда. Это не «приложение». По сути, я хочу, чтобы Discourse служил псевдо-бэкендом для этого статического сайта. Если у них есть непрочитанные уведомления на Discourse, я хочу иметь возможность отображать их на статическом сайте.

Единственный способ, который я могу придумать, — это использование куки-файлов Discourse, которые не включают поддомен, а согласно моим исследованиям, Discourse не поддерживает такую настройку.

Есть какие-нибудь идеи?

Это интересная задача.

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

Поскольку сайт является статической страницей, у него, по сути, нет состояния авторизованного пользователя, верно?

У нас есть возможность использовать Embedding a list of Discourse Topics in another site и Embed Discourse comments on another website via Javascript — оба варианта работают со статическими сайтами.

Я считаю, что создание нового решения для уведомлений — отличная идея!

Точно. Это просто HTML, CSS и обычный фронтенд-JavaScript.

В идеальном сценарии я хотел бы иметь возможность использовать JavaScript на статическом сайте, который выполняется в браузере, для получения данных из Discourse.

Уведомления — один из примеров, и встраивание для этого было бы отличным.

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


Я понимаю, что это будет неподдерживаемый хаком, но есть ли способ изменить то, как Discourse устанавливает свой cookie сессии, чтобы он не включал поддомен, и при этом это изменение сохранялось бы после обновлений?