オンラインコース向けのDiscourseの構成方法は?

こんにちは、ハンターさん。

現在はベータ版ですが、Discourse との統合は順調に進んでいます。当サイトでは SSO 統合を使用して強制的にログインを要求しています。これは問題なく機能していますが、以下の点にご注意ください。

  1. Discourse は「@」記号を含むユーザー名を受け付けません。「@」以前の部分のみがユーザー名として切り捨てられます。後でこのユーザー名を引数として Discourse API を呼び出す際に問題が発生する可能性があります。Discourse 側では、someone@example.com というユーザー名は認識されず、そのユーザーのユーザー名は「someone」として保存されます。これを回避する簡単な方法は、自サイトのユーザー名で「@」記号を禁止することです。

  2. 自サイトでユーザーが登録された場合、そのユーザーを Discourse サイトに初めて訪問する前に(自動的に SSO が同期される前に)何らかの処理(例えば、Discourse グループへの追加など)を行いたい場合は、Discourse API を明示的に呼び出して SSO ユーザーを同期する必要があります。私は Django ベースのサイトを使用しているため、pydiscourse ライブラリを利用しています。これには sync_sso メソッドがあり、これを非常に簡単に実行できます(Client Challenge

はい、一部のコースを期限切れにする予定です。その場合、サーバーは Discourse API を呼び出して、そのコースの一般グループおよびそのコース内のコホート専用のグループからユーザーを削除します。

私は Django サイトに、これらの「コース」グループと各コース内のさまざまな「コホート」グループを追跡するテーブルを作成しました。そのため、学生の追加や削除などを行う際に、その情報を利用しています。