Supprimer un utilisateur d'un groupe avec un effet de Trust Level ne recalcule pas automatiquement les appartenances du groupe de l'utilisateur

J’ai lu le sujet, Group trust level où il est dit,

Ainsi que ce sujet plus ancien, Should losing group membership unlock trust level?

Où la situation décrite correspond largement à mon expérience,

Mais, ce que j’ai trouvé dans ma propre instance de test de Discourse, c’est ceci…

Avec tous les paramètres de Niveau de confiance par défaut, j’ai un compte TL1 (U) et un groupe nommé tl3 qui accorde Trust_Level_3.

  1. Conditions de départ
    • Niveau de confiance : 1: utilisateur de base Déverrouillé
    • Groupes automatiques : trust_level_0, trust_level_1
    • Groupes personnalisés : Aucun
  2. Ajouter U à tl3
    • Niveau de confiance : 3: Régulier Déverrouillé
    • Groupes automatiques : trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • Groupes personnalisés : tl3
  3. Retirer U de tl3
    • Niveau de confiance : 2: Membre Déverrouillé
    • Groupes automatiques : trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • Groupes personnalisés : Aucun
    • NOTE : Malgré un niveau de confiance de 2, l’utilisateur fait toujours partie du groupe automatique trust_level_3. Sachant qu’un utilisateur ne peut pas être rétrogradé à TL1 sans un niveau de confiance verrouillé, le résultat attendu ici est que l’utilisateur devrait immédiatement perdre son appartenance au groupe automatique trust_level_2.
  4. Verrouiller le niveau de confiance de U
    • Niveau de confiance : 2: Membre Verrouillé
    • Groupes automatiques : trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • Groupes personnalisés : Aucun
    • NOTE : Malgré un niveau de confiance de 2: Membre, l’utilisateur fait toujours partie du groupe automatique trust_level_3.
  5. Déverrouiller le niveau de confiance de U
    • Niveau de confiance : 1: De base Déverrouillé
    • Groupes automatiques : trust_level_0, trust_level_1
    • Groupes personnalisés : Aucun

Ainsi, lors du désenregistrement d’un utilisateur d’un groupe, le niveau de confiance est automatiquement et instantanément recalculé, mais l’appartenance au groupe automatique n’est pas recalculée, sauf si le niveau de confiance de l’utilisateur subit un événement de déverrouillage.

Mon hypothèse est que les appartenances aux groupes automatiques sont calculées à l’échelle du système pour tous les utilisateurs une fois par jour et que les appartenances aux groupes automatiques seront rectifiées à ce moment-là. Mais il semble que les appartenances aux groupes automatiques devraient être déclenchées soit lors du retrait d’un utilisateur d’un groupe ayant un effet sur le niveau de confiance, soit déclenchées immédiatement lors de tout changement de niveau de confiance, pas seulement lors d’une augmentation du niveau de confiance.

Donc, l’appel API backend vers,

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

met à jour les appartenances aux groupes automatiques, mais

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

ne le fait pas, ce qui ressemble à un bug, surtout si vous utilisez des groupes automatiques de niveau de confiance pour le contrôle d’accès.

Et, pour être complet, évidemment les appels vers,

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

qui sont invoqués lors du changement manuel du niveau de confiance d’un utilisateur dans l’interface d’administration, recalculent immédiatement les appartenances aux groupes automatiques comme prévu.

2 « J'aime »

Oui, le problème fondamental de l’expérience développeur ici est que nous devrions interdire cette manipulation des groupes automatiques et vous forcer à passer par PUT {{site}}/admin/users/{{userId}}/trust_level uniquement pour gérer les transitions. Retournez un 422 ou quelque chose si les gens tentent d’utiliser des points de terminaison pour ajouter ou supprimer manuellement des personnes des groupes.

Le déroulement du niveau de confiance devrait toujours se faire à partir d’ici :

Car cela prend également en charge le verrouillage, ce qui est essentiel.

Je comprends.
Je veux juste être clair, tout le truc de l’API a été vu en train d’enregistrer le flux XHR lors de l’exécution d’actions sur les appartenances de groupe via l’interface utilisateur d’appartenance de groupe. Je n’effectue pas réellement ces actions en tant qu’appels API, ce sont juste les appels API effectués lors de l’utilisation de l’interface utilisateur.

Donc, je pense que s’il y a un groupe avec un effet TL3, cliquer sur ce bouton,

Devrait immédiatement les retirer du groupe trust_level_3 s’ils ne répondent pas autrement aux exigences du niveau de confiance 3 ou si ce niveau de confiance est verrouillé.

Le cas d’utilisation imaginé ici est de permettre, disons, à un groupe d’utilisateurs TL4 d’être définis comme propriétaires d’un groupe avec un effet TL3 afin qu’ils puissent promouvoir manuellement les gens au TL3.

L’aspect promotionnel fonctionne, mais ces mêmes utilisateurs qui retirent quelqu’un du groupe à effet TL3 n’ont pas pour effet immédiat de retirer l’utilisateur affecté de trust_level_3.

Comprendre pleinement qu’il s’agit d’une utilisation très non conventionnelle de la fonctionnalité.
Il semble simplement incongru qu’un utilisateur puisse voir son niveau de confiance passer de 3 à 2 et rester dans le groupe trust_level_3 jusqu’au prochain événement de recalcul.

2 « J'aime »