Discusión compartida/Inicio de sesión en sitio estático

¡Hola a todos!

Esta es mi situación. Estoy intentando ejecutar una instalación de Discourse en talk.example.com mientras mantengo un sitio web en www.example.com. Quiero que, cuando alguien inicie sesión en el sitio de Discourse, también aparezca como conectado en el sitio www. Si se cierran sesión en el sitio de Discourse, se cerrarán sesión en www. He leído mucho sobre este tema aquí y la respuesta común parece ser utilizar SSO. No creo que eso pueda funcionar en mi situación y aquí está la razón.

El sitio en www.example.com es un sitio web estático construido con Hugo. Para aquellos que no lo conocen, piensen en Jekyll. Por lo tanto, no hay base de datos ni ningún backend en absoluto para él. No es una “aplicación”. Básicamente, quiero que Discourse sea un backend pseudo para este sitio estático. Si tienen notificaciones sin leer en Discourse, quiero poder mostrarles eso a través del sitio estático.

La única forma en que puedo pensar en hacerlo es mediante las cookies de Discourse que no incluyen el subdominio, para lo cual mi investigación hasta ahora indica que Discourse no lo admite.

¿Alguna idea?

Esta es una oportunidad interesante.

Si el sitio fuera dinámico con un backend y tuvieras SSO entre Discourse y el sitio, habría un camino claro a seguir. Tu backend sabría quién es el usuario y podría usar una clave de API de administrador para consultar las notificaciones de Discourse para el usuario actual y enviarlas junto con la página en cada solicitud.

Dado que el sitio es una página estática, ¿realmente no tiene un estado de inicio de sesión, cierto?

Tenemos la opción de Embedding a list of Discourse Topics in another site y Embed Discourse comments on another website via Javascript, ambas de las cuales funcionan con sitios estáticos.

¡Creo que crear una nueva para notificaciones es una excelente idea!

Exacto. Solo es HTML, CSS y JavaScript típico del lado del cliente.

En un escenario ideal, me gustaría poder usar JavaScript en el sitio estático, que se ejecuta en el navegador, para poder obtener datos de Discourse.

Las notificaciones son un ejemplo, y un incrustado para eso sería genial.

Otro ejemplo: me encantaría poder establecer un campo de usuario en Discourse para que las personas lo completen. Luego, en el sitio estático, poder acceder a ese campo de usuario para cambiar cómo se renderiza el contenido (mediante JavaScript). Por ejemplo, para reordenar el contenido y personalizarlo para el usuario.


Sé que será un hack no soportado, pero ¿hay alguna manera de cambiar cómo Discourse establece su cookie de sesión para que no incluya el subdominio, y que sobreviva a las actualizaciones?