Geteilter Diskurs/Anmeldung für statische Websites

Hallo zusammen,

hier ist meine Situation: Ich versuche, eine Discourse-Installation unter talk.example.com zu betreiben, während gleichzeitig eine Website unter www.example.com läuft. Mein Ziel ist es, dass sich Benutzer, die sich bei der Discourse-Seite anmelden, automatisch auch auf der www-Seite angemeldet zeigen. Wenn sie sich von Discourse abmelden, sollen sie auch von www abgemeldet sein. Ich habe mich hier in vielen Themen umgelesen, und die gängige Antwort scheint die Nutzung von SSO zu sein. Ich glaube jedoch nicht, dass das in meinem Fall funktioniert, und zwar aus folgendem Grund:

Die Website unter www.example.com ist eine statische Seite, die mit Hugo erstellt wurde. Für diejenigen, die es nicht kennen: Denkt an Jekyll. Es gibt also keine Datenbank und überhaupt kein Backend dafür. Es ist keine „App“. Im Grunde möchte ich, dass Discourse als pseudo-Backend für diese statische Seite dient. Wenn sie ungelesene Benachrichtigungen auf Discourse haben, möchte ich dies ihnen über die statische Seite anzeigen können.

Der einzige Weg, den ich mir vorstellen kann, führt über Discourse-Cookies, die die Subdomain nicht einschließen – was meiner bisherigen Recherche zufolge von Discourse nicht unterstützt wird.

Habt ihr Ideen?

Das ist eine interessante Herausforderung.

Wenn die Website dynamisch mit einem Backend wäre und du eine SSO-Verbindung zwischen Discourse und der Website hättest, gäbe es einen klaren Lösungsweg. Dein Backend weiß, wer der Benutzer ist, und kann einen Admin-API-Schlüssel verwenden, um Discourse-Benachrichtigungen für den aktuellen Benutzer abzufragen und bei jeder Anfrage zusammen mit der Seite weiterzuleiten.

Da es sich bei der Website um eine statische Seite handelt, gibt es doch eigentlich keinen angemeldeten Zustand, oder?

Wir haben die Möglichkeit, Embedding a list of Discourse Topics in another site und Embed Discourse comments on another website via Javascript einzubinden; beides funktioniert mit statischen Websites.

Ich finde, eine neue Lösung für Benachrichtigungen ist eine großartige Idee!

Genau. Es ist einfach HTML, CSS und typisches Frontend-JavaScript.

Im Idealfall würde ich gerne JavaScript auf der statischen Seite verwenden können, das im Browser läuft, um Daten von Discourse abzurufen.

Benachrichtigungen sind ein Beispiel, und ein Embed dafür wäre großartig.

Ein weiteres Beispiel: Ich würde gerne ein Benutzerfeld auf Discourse für die Nutzer zum Ausfüllen bereitstellen. Dann könnte ich auf der statischen Seite auf dieses Benutzerfeld zugreifen, um die Darstellung des Inhalts zu ändern (über JavaScript). Zum Beispiel, um Inhalte neu zu ordnen und sie für den Benutzer anzupassen.


Ich weiß, dass es ein nicht unterstützter Hack sein wird, aber gibt es eine Möglichkeit, die Art und Weise, wie Discourse sein Session-Cookie setzt, so zu ändern, dass die Subdomain nicht enthalten ist und die Änderung auch bei Updates bestehen bleibt?