制限付きカテゴリへの強制投稿

こんにちは、

Discourse をコミュニティのバックエンドとして API を通じて利用しています。通常のユーザーに対して、トピックの作成やトピックタイトルの編集ができないよう、特定のカテゴリを制限したいと考えています。ただし、スレッドの閲覧や返信は可能にする必要があります。これらすべてを、これらのユーザーに代わって(管理者トークンを使用して)API 経由で実行したいのですが、適切なセキュリティと API 呼び出しを通じて実現する方法はありますか?例えば、管理者キー/ユーザーを使って、通常のユーザーに代わって制限されたカテゴリに投稿を強制的に作成できれば十分です。しかし、API ドキュメントにはそのようなケースが見当たりません。

よろしくお願いいたします。

API は、そのユースケース向けにはドキュメント化されません。完全にサポート外であるためです(ただし、同様のことを行っているクライアントが少なくとも一人います)。Discourse API のリバースエンジニアリング方法 が、おそらく入手可能な最善の情報であり、また discourse/config/routes.rb at main · discourse/discourse · GitHub も参照してください。

管理用 API キーを使用している場合、すべての制限が解除されるため、トピックを作成できるはずです。あるいは、ユーザーとしてトピックを作成し、その後、そのユーザーが投稿できないカテゴリへ移動させるという方法はいかがでしょうか?

ありがとうございます。リバースエンジニアリングについては承知していますが、Discourseのフロントエンドから傍受できる同様のユースケースが存在しません。つまり、管理者としてログインしていても、別のユーザーとしてトピックを作成する方法がないということです。

現時点での回避策として、特定のカテゴリについて「全員」には閲覧・コメント権限を、「管理者」には閲覧・コメント・作成権限を設定しています。トピックは「system」のみが作成するため(ユーザーがタイトルを改ざんする手段はありません)、テンプレート元の投稿も同時に作成されます。その後、APIキーを使用して、作成されたトピックに対して異なるユーザーとしてコメントを追加できます。

私がサポートしていた別のグループでは、ユーザーが SSO(おそらくそうでしょう)を通じて Discourse にログインし、自分自身のアカウントとして操作を行っていたようです。これにより、Rails が提供するすべてのユーザー保護機能が活用できます。単一の管理者 API キーで全てを処理するのは、災いの元になるでしょう。

しかし、現在の課題を解決するためには、まず「admin」としてトピックを作成し、その後所有権を変更するという方法が考えられます。これは比較的簡単に行えるはずです(ただし、トランザクションの開始から完了までの間に何か問題が起きないことを願う必要がありますが)。

もう一つの可能性としては、ユーザーとして作成するルートを追加するカスタムプラグインを作成するという方法もあります(以前にリンクしたルートを確認して、既にそのような機能が存在するかどうかは見ていません)。

しかし、よく考えてみると(あなたが実際に行っていることは何も知りませんが)、フロントエンド側でユーザーとしてログインさせ、API との対話をユーザーのアカウントとして行うようにするのが望ましいように思えます。