Trust Level効果のあるグループからユーザーを削除しても、ユーザーの自動グループメンバーシップは再計算されません

トピック Group trust level を読みました。そこには次のように書かれています。

また、この古いトピック Should losing group membership unlock trust level? も読みました。

そこでの説明は、私の経験と大部分一致しています。

しかし、Discourseの独自のテストインスタンスで発見したのは次のとおりです。

すべての信頼レベル設定がデフォルトの場合、TL1アカウント(U)と、Trust_Level_3を付与するtl3という名前のグループがあります。

  1. 開始条件
    • 信頼レベル: 1: basic user ロック解除済み
    • 自動グループ: trust_level_0, trust_level_1
    • カスタムグループ: なし
  2. Utl3に追加します。
    • 信頼レベル: 3: Regular ロック解除済み
    • 自動グループ: trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • カスタムグループ: tl3
  3. Utl3から削除します。
    • 信頼レベル: 2: Member ロック解除済み
    • 自動グループ: trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • カスタムグループ: なし
    • 注: 信頼レベルが2であるにもかかわらず、ユーザーは依然として自動グループtrust_level_3に属しています。信頼レベルがロックされていない限り、ユーザーはTL1に降格できないという理解に基づくと、ここで期待される結果は、ユーザーは直ちにtrust_level_2自動グループのメンバーシップを失うはずです。
  4. Uの信頼レベルをロックします。
    • 信頼レベル: 2: Member ロック済み
    • 自動グループ: trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • カスタムグループ: なし
    • 注: 信頼レベルが2: Memberであるにもかかわらず、ユーザーは依然として自動グループtrust_level_3に属しています。
  5. Uの信頼レベルをロック解除します。
    • 信頼レベル: 1: Basic ロック解除済み
    • 自動グループ: trust_level_0, trust_level_1
    • カスタムグループ: なし

したがって、ユーザーをグループから解除すると、信頼レベルは自動的かつ即座に再計算されますが、自動グループのメンバーシップは、ユーザーの信頼レベルがロック解除イベントを経験しない限り、再計算されません。

私の仮定では、自動グループのメンバーシップは、すべてのユーザーに対して1日1回システム全体で計算され、その時点で自動グループのメンバーシップが修正されるということです。しかし、信頼レベルに影響を与えるグループからの削除時、または信頼レベルの増加時だけでなく、信頼レベルの変更時に自動グループのメンバーシップがトリガーされるべきだと感じます。

したがって、バックエンドAPI呼び出しの、

POST {{site}}/admin/users/{{userId}}/groups

は自動グループのメンバーシップを更新しますが、

DELETE {{site}}/admin/users/{{usedId}}/groups/{{groupId}}

は更新しません。これは、特にアクセス制御に自動信頼レベルグループを使用している場合、バグのように感じます。

そして、完全を期すために、明らかに呼び出しの、

PUT {{site}}/admin/users/{{userId}}/trust_level

管理インターフェースでユーザーの信頼レベルを手動で変更したときに呼び出されるものは、期待どおりに自動グループのメンバーシップを即座に再計算します。

「いいね!」 2

ええ、ここでの基本的な開発者体験(dev xp)は、これらの自動グループのいじくり回しを禁止し、PUT {{site}}/admin/users/{{userId}}/trust_level のルートを使用して移行するように強制することです。人々がエンドポイントを使用して手動でグループに追加または削除しようとした場合は、422などを返します。

信頼レベルのロールバックは、常にここから行う必要があります。

これもロックをサポートしているため、非常に重要です。

承知いたしました。

ただ明確にしておきたいのですが、API関連のことは、グループメンバーシップUIでグループメンバーシップのアクションを実行した際に、XHRストリームを記録しただけです。実際にはAPIコールを実行しているのではなく、UIを使用しているときに発生するAPIコールです。

そのため、TL3の効果を持つグループがあり、このボタンをクリックした場合、

そのユーザーが、それ以外で信頼レベル3の要件を満たしていない場合や、信頼レベルがロックされている場合を除き、直ちにtrust_level_3グループから削除されるべきだと考えています。

想定されるユースケースは、例えばTL4ユーザーのグループを、TL3の効果を持つグループのオーナーとして設定できるようにし、彼らが手動でユーザーをTL3に昇格できるようにすることです。

昇格の側面は機能しますが、同じユーザーがTL3効果グループからユーザーを削除しても、影響を受けたユーザーが次の再計算イベントまでtrust_level_3グループに残ってしまうという即時的な効果はありません。

この機能の非常にオフラベルな使用法であることを十分に理解しています。

ユーザーの信頼レベルが3から2に変更されたにもかかわらず、次の再計算イベントまでtrust_level_3グループに残ってしまうというのは、矛盾しているように思えます。

「いいね!」 2