以下は、多くの人が直面したであろうユースケースです。
- Discourse に多数のユーザーがいる
- API を使用して Discourse ユーザーを作成し、グループメンバーシップを管理する外部システム(サービスプロバイダー、Drupal)がある
- Drupal には重複するユーザーセットがある。つまり、同じメールアドレスを持つユーザーが Discourse と Drupal に存在しますが、リンクされていません
- ユーザーが SSO を使用して Discourse にアクセスせず、代わりにメールに依存する場合があるため、Drupal は API を使用してユーザー、グループ、およびメンバーシップを同期します
現在の動作:
- Discourse は、同じメールアドレスを持つ Discourse ユーザーが既に存在するため、Discourse ユーザーを作成する API 呼び出しを拒否することがあります。
望ましい動作:
- Discourse は、メールを介して既存の Discourse ユーザーを Drupal ユーザーにリンクします。
提案される解決策:
- マッチするメールアドレスを持つユーザーを取得するために、Discourse の
/admin/users/list/all.json?email=$emailAPI エンドポイントをクエリします。 - マッチするユーザーが存在する場合
- 既存のユーザーを接続します(Drupal 側)。
- それ以外の場合
- 新しい Discourse ユーザーを作成します。
質問
- これは妥当な解決策のように思えますか、それともより良い方法がありますか?
- API クエリは正しく形成されていますか?
all.jsonもemailクエリ文字列パラメータも文書化されておらず、例はほとんど見つかりませんでしたが、この記事 はそれが最善の方法であることを示しているようです。