既存のユーザーをグループに追加し、新しいユーザーを招待する

特定のユースケースについて、より簡単な方法があるかどうか知りたいと考えています。

  • SSO経由のユーザー全員が、アクティブなフォーラムアカウントを持っているわけではありません
  • プライベートフォーラムへのアクセス権限を得るために、定期的にユーザーをフォーラムグループに追加する必要があります
  • ユーザーがアクティブなフォーラムアカウントを持っているかどうかは、グループへの追加を試みる前にわかりません

例:
毎月、スタッフのメンバーがプライベートフォーラムへのアクセス資格を持つ100以上のアカウントのリストを持っています。これらのアカウントにはSSOユーザー名とメールアドレスがありますが、まだフォーラムアカウントを持っていない場合があります。

:question: フォーラムアカウントを既に持っている人をグループに追加し、持っていない人をフォーラムに招待(自動的にグループに追加)する、シンプルな方法はありますか?

グループページでは、メンバーを追加ボタンを使って、カンマ区切りのユーザー名リストを貼り付けることができます。有効なユーザー名の場合、そのユーザーはグループに追加されます。無効なユーザー名(つまり、まだフォーラムアカウントを持っていない場合)は失敗し、追加されません。

グループに正常に追加されたユーザーのリストを手動で確認し、追加されなかったユーザー名を特定して、それらの人にフォーラム招待(例:https://meta.discourse.org/t/multiple-use-invite-links/154325)を送信する以外に、現在のユーザーと潜在的なユーザーの両方に対して「招待」と「グループ追加」を組み合わせるシンプルな方法はありますか?

理想的には、これをワンステップで完了できる方法を見つけたいと考えています。

考えられる(しかし依然として非常に面倒な!)多段階の回避策としては、以下のようなものが挙げられます:

  1. 名前の一覧をデータエクスプローアのクエリに入力し、アクティブおよび非アクティブなユーザー名の一覧を取得する
  2. アクティブなユーザー名の一覧に対して「グループに追加」を実行する
  3. 非アクティブなユーザー全員にカスタム招待リンクを送信する

これを簡素化する方法があれば、ぜひ聞かせてください :slight_smile:

データエクスプローラーは使用できません。これは読み取り専用のツールです。

このような機能は、新たに作成する必要があります。

add_groups および remove_groups SSO パラメータを使用して、Discourse グループにユーザーを追加する方法を検討されましたか?SSO プロバイダーサイトに存在するユーザーについては、Discourse アカウントを作成し、sync_sso ルートへの API 呼び出しを行うことで、Discourse グループに追加できます。その設定方法に関する詳細は、こちらをご覧ください:Sync SSO user data with the sync_sso route。このアプローチが貴社に適合しそうな場合は、設定方法についてさらに詳しくご案内できます。

「いいね!」 1

サイモン、ありがとうございます。有望ですね。

当社のすべてのユーザーはSSOサイト上に存在します(彼らは当社のマーケットプレイスで販売者です)。しかし、現在、その中のごく一部だけがDiscourseアカウントを作成して当社のフォーラムを利用しています。このSSOは顧客と販売者の両方をカバーしていますが、すべての顧客に対してDiscourseアカウントを自動的に作成することは望ましくありません(数が多すぎます)。一方、すべての販売者に対して作成すれば、状況が劇的に簡素化されます。

この場合、特定の販売者が特定のマーケットプレイスやサービスを使い始めたときにのみ、プライベートフォーラムグループへのアクセス権を付与する必要があります。

例:マーケットプレイス1の販売者はSSOアカウントを持っています。この段階でフォーラムにログインすることで、Discourseアカウントを作成する可能性があります。

その後、その販売者がマーケットプレイス2へのアクセス権を得ると、SSOアカウントにその変更が記録されます。そのマーケットプレイス用にカスタムユーザーグループ(およびプライベートフォーラムカテゴリ)が用意されています。

  • この時点で既にDiscourseアカウントを持っている場合は、プライベートフォーラムエリアを表示できるようにグループ情報を更新する必要があります。
  • まだDiscourseアカウントを持っていない場合は、関連するグループを付与した上でアカウントを作成したいと考えています。

現在のチームでは、ユーザー名のコンマ区切りリストを用いて「グループに追加」操作を行っています。ユーザーが既にDiscourseアカウントを持っている場合はグループへのアクセス権が付与されますが、フォーラムに未登録の場合は何もしません。

直近のバッチ追加以降にDiscourseアカウントを作成したユーザーを取りこぼさないよう、チームは通常、グループメンバーシップを更新する際に過去Xヶ月以内に条件を満たしたすべてのユーザー名を含めています。これはやや面倒なプロセスです。

sync_sso ルートに対して add_groups SSO パラメータを含む API 呼び出しを行うと、既存のユーザーはグループに追加されます。ユーザーがまだ Discourse アカウントを持っていない場合、そのユーザーのためにアカウントが作成され、グループに追加されます。同様に remove_groups SSO パラメータを使用して、ユーザーをグループから削除することもできます。この処理に sync_sso ルートを使用するもう一つの利点は、変更を有効にするためにユーザーが Discourse からログアウトして再ログインする必要がないことです。

チームにとって PHP/WordPress のサンプルコードが参考になる場合は、こちらの実装をご覧ください:https://github.com/discourse/wp-discourse/blob/master/lib/utilities.php#L378。リンクしたファイルには、WP Discourse プラグインを拡張するためにサイトが利用できるユーティリティ関数が含まれています。そのため、静的メソッドが使用されています。

「いいね!」 4

ありがとう、サイモン!それは理想的に聞こえますね。今の方法よりはるかに良いです :slight_smile:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.