グループオーナーがグループにメンバーを追加できない

以前は正常に動作していたはずです。

期待される動作
グループの所有者は「メンバーを追加」モーダルを使用して、グループにメンバーを追加できます。

実際の動作
グループの所有者は「メンバーを追加」モーダルが表示されますが、送信しようとすると 403 エラー(禁止)が表示されます。

2 つの異なるサイトで確認されました。

スクリーンショットを共有します:

「いいね!」 5

まだ 2.7.0.beta9 ( 4a2912233c ) で動作しています。

「いいね!」 3

GitHubから最新のコードをプルして再テストしました。問題が確認されました。再現手順は以下の通りです:

  1. 新しいユーザーを作成します。このユーザーはモデレーターでも管理者でもありません。
  2. 以下の設定で新しいグループを作成します:Allow users to leave the group freely=TrueAllow users to send membership requests to group owners=TrueWho can see this group?=EveryoneWho can see this group's members?=EveryoneWho can @mention this group?=Only moderators and adminsWho can message this group?=Only moderators and admins
  3. そのユーザーをグループのオーナーに設定します。
  4. グループオーナーとしてログインした状態で、別のユーザーをグループに追加しようとします。
「いいね!」 5

ユーザーは TL2 以上だと想定してよいでしょうか?

「いいね!」 4

この問題の原因を特定できました。

問題を引き起こしていた行はこれです: discourse/app/controllers/groups_controller.rb at e2e13a70f63605b92b4e521cc9f818061c1ccfb6 · discourse/discourse · GitHub

@Benjamin_D の指摘通り、これは TL(信頼レベル)の問題です。

min_trust_level_to_allow_invite というサイト設定があり、これが TL2 に設定されていた一方、グループの所有者は TL1 でした。

グループの所有者は、信頼レベルの要件を満たさずにユーザーをグループに招待できるべきでしょうか?混乱を招くように思えます。

「いいね!」 10

:thinking: その通りですね。彼には招待する資格があるのでしょうか?それとも、TL 基準を満たしていないならオーナーであるべきではないのでしょうか?

「いいね!」 6

それも理にかなっていますね。

あるいは、このエラーメッセージをより具体的にすることでも対応可能です。
例えば、InvalidAccess エラーを You are not permitted to view the requested resource.(英語)というメッセージと共に発生させる代わりに、

InsufficientTrustLevel エラー(おそらく InvalidAccess のサブクラスとして)を作成し、You do not have the required trust level to view the requeted resource(英語)というメッセージを割り当てます。そうすれば、管理者はそれがバグではなく TL の問題であると特定できます。

コードベースでこの機能が定義されている場所についての補足情報:

もしこれが適切な方針だと判断されれば、PR を作成することも可能です。

「いいね!」 7

ここでのエラーメッセージを改善する必要があることに同意しますが、実際にはここで後退してしまったと思います。

グループオーナーの役割は、そのグループのメンバーシップを管理することです。グループにユーザーを招待・追加できないのであれば、その機能は半分壊れていることになります…

@dan、これをあなたのタスクリストに追加してもらえますか?

「いいね!」 9

みなさんの鋭い分析、ありがとうございます!

もしかしたら間違っているかもしれませんが、この問題は招待システムの改善に向けた私たちの作業に伴って発生したものだと思います。私たちは招待を統一し、すべての招待を同じシステムで処理できるようにするとともに、既存ユーザーに関する機能を分離しています。最近では、新しいユーザーをサイトに参加させてトピックに貢献させる招待とは別に、既存ユーザーに対してトピック内のメニューにある「共有」ボタンを通じてトピックに関する通知を送るように変更しました。

グループについても同様の対応を行う必要があります。これはすでに作業リストに含まれていますが、サイトへの新規ユーザー招待に必要なTL(Trust Level)を持っていないとグループに誰かを追加できないのであれば、今後はより緊急に対応が必要になったかもしれません。

「いいね!」 7

この制限は、グループにメールを招待する場合には理にかなっています。しかし、既存のユーザーを招待する場合には理にかなっていません。この問題は以下のプルリクエストで修正されました:

これで当面の問題は解決しますが、この領域の全面的な見直しを予定しています。

「いいね!」 8

このトピックは2日後に自動的に閉鎖されました。新しい返信は受け付けられません。