共有ディスコース/静的サイトログイン

みなさん、こんにちは。

私の状況についてお話しします。私は talk.example.com で Discourse をインストールして運用したいと考えていますが、同時に www.example.com で Web サイトを維持したいと考えています。Discourse サイトにログインすると、www サイトにも同時にログインされている状態にしたいと考えています。Discourse サイトからログアウトすれば、www サイトからもログアウトされるようにしたいのです。ここで多くのトピックを読みましたが、一般的な回答は SSO を使用するというものでした。しかし、私の状況ではそれは機能しないと思います。その理由は以下の通りです。

www.example.com のサイトは Hugo で構築された静的 Web サイトです。Jekyll をご存じない方のために説明すると、Jekyll と似たようなものです。つまり、データベースもバックエンドも一切存在しません。「アプリ」ではありません。基本的には、Discourse をこの静的サイトの疑似的なバックエンドとして使いたいと考えています。Discourse で未読の通知がある場合、静的サイトを通じてそれをユーザーに表示したいと考えています。

私が思いつく唯一の方法は、Discourse のクッキーを使用することですが、私のこれまでの調査では、Discourse はサブドメインを含まないクッキーには対応していないとのことでした。

何かアイデアはありませんか?

これは興味深い課題ですね。

もしサイトがバックエンドを持つ動的なもので、Discourse との間に SSO があるなら、明確な解決策があります。バックエンドがユーザーを特定できるため、管理用 API キーを使って現在のユーザーの Discourse 通知を照会し、リクエストごとにページと一緒に送信することが可能になります。

しかし、サイトが静的ページである場合、ログイン状態は存在しないのでしょうか?

静的サイトでも動作する以下のオプションがあります:

通知用の新しい機能を作るのは素晴らしいアイデアだと思います!

その通りです。単なる HTML、CSS、そして一般的なフロントエンドの JavaScript だけです。

理想的には、静的サイト上でブラウザ内を実行する JavaScript を使って、Discourse からデータを取得できるようにしたいと考えています。

通知はその一例で、それを埋め込む機能が非常に役立ちます。

もう一つの例として、Discourse 側でユーザーが記入できる「ユーザーフィールド」を設定できるようにし、静的サイト側でそのユーザーフィールドにアクセスしてコンテンツの表示方法を変更(JavaScript 経由)できるようにしたいです。例えば、ユーザーに合わせてコンテンツの順序をカスタマイズして並べ替えるなどです。


サポート外のハックになることは理解していますが、Discourse がセッションクッキーを設定する際、サブドメインを含めないように変更する方法で、アップデート後も維持できるような方法はありますか?