Le flair de l'utilisateur reste après la suppression de l'utilisateur du groupe

Si je retire un utilisateur d’un groupe, dois-je m’attendre à ce que le flair de ce groupe soit supprimé immédiatement de l’avatar de l’utilisateur ?

Je viens de retirer un utilisateur d’un groupe.
Elle n’a aucun groupe principal sélectionné.
image

Dans ses préférences, aucun flair n’est sélectionné.

J’ai actualisé mon navigateur et je me suis déconnecté puis reconnecté.

Doit-elle se déconnecter et se reconnecter avant que le flair ne soit supprimé ? Ai-je manqué une étape quelque part ?

6 « J'aime »

La plupart des tâches sont affichées dans forum.example.com/sidekiq/scheduler. Par exemple, si vous avez modifié une requête de badge, vous pouvez attendre une journée que la tâche BadgeGrant s’exécute, ou l’accélérer en cliquant manuellement sur le bouton Déclencher. Je ne sais pas laquelle de ces tâches met à jour les insignes.

1 « J'aime »

Oui, sauf dans un cas limite très spécifique concernant un utilisateur anonyme, qui verra l’ancien insigne sur certaines pages pendant une minute.

Nous allons enquêter et corriger le problème.

3 « J'aime »

Les badges de profil de l’utilisateur sont également conservés lorsque le groupe principal est modifié pour un nouveau groupe principal auquel un badge est associé.

1 « J'aime »

Ceci est maintenant corrigé ici :

Avez-vous modifié le groupe principal en utilisant l’action en masse « Rendre tous principaux » sur la page du groupe unique ?

4 « J'aime »

Non, j’ai modifié le groupe principal d’un seul utilisateur sur la page d’administration de l’utilisateur.

1 « J'aime »

Je tiens à vous informer que le problème persiste dans la version 2.8.0.beta4 (https://github.com/discourse/discourse/commits/1a65f0bfbbd32887a3c90fdaa894487c21f8467a).

Nous n’avons pas encore mis à jour vers le dernier commit car aucune modification n’a été apportée pour corriger ce bug.
Dans notre cas, les insignes des utilisateurs restent inchangés lorsque nous mettons à jour les groupes via Discourse Connect SSO. Nous constatons que l’utilisateur n’est plus présent dans le groupe, mais l’insigne demeure.

J’espère que cela aidera à identifier et à corriger le bug.

Cette correction ne s’appliquera pas rétroactivement. Vous devez mettre à jour manuellement les badges des anciens utilisateurs. Pourriez-vous me dire combien d’utilisateurs sont concernés de votre côté ?

Wow. Eh bien, je ne connais pas les estimations. D’après nos flux de données, il se peut que des dizaines, voire des centaines d’utilisateurs quittent ou rejoignent des groupes spécifiques via SSO chaque jour.
Est-ce que je peux compter les utilisateurs ayant des badges obsolètes (non liés à des groupes) ?

Et comment peut-on même modifier les badges des autres utilisateurs ? Je n’ai pas trouvé cette option dans le panneau d’administration. Je ne dis pas que je vais mettre à jour un si grand nombre d’utilisateurs un par un pour effacer les traces de ce bug.

Au fait, supprimer le badge dans les paramètres du groupe et en téléverser un autre ne résout rien. Les utilisateurs en dehors de ce groupe conservent toujours le badge du groupe :frowning:

Je vérifie simplement si quelqu’un sait quoi faire face à ce problème.


Désolé de remonter ce post autant de fois, mais ce bug perturbe vraiment notre communauté :frowning:
@vinothkannans, as-tu des suggestions sur la manière de gérer ses effets pour nous ?

User.where(flair_group_id: REMPLACER_PAR_ID_DE_GROUPE).where.not(primary_group_id: REMPLACER_PAR_ID_DE_GROUPE).update_all(flair_group_id: nil)

La commande ci-dessus peut résoudre votre problème. Exécutez-la dans votre console Rails. Veuillez effectuer une sauvegarde avant de procéder.

Merci pour votre réponse.
Ai-je bien compris que, en raison des effets de ce bug, nous devrions exécuter des requêtes de ce type quotidiennement ou à une autre fréquence ? Le problème est que notre groupe d’utilisateurs est mis à jour quotidiennement et à chaque fois que le statut d’abonnement d’un utilisateur change sur le site principal. Tout est géré via SSO.

Non, vous n’avez pas besoin de l’exécuter régulièrement. Le problème est maintenant résolu dans le commit ci-dessus. Cette commande corrigera les badges pour les utilisateurs concernés précédemment.

Je vérifierai une solution alternative demain.

1 « J'aime »

Merci, j’attendrai patiemment les résultats de votre enquête avant de me tourner vers les requêtes Rails. N’hésitez pas à me faire savoir si je peux vous être d’une quelconque aide sur ce problème.

@kinetiksoft le code Rails ci-dessous devrait résoudre le problème pour tous les membres de chaque groupe. Il supprimera l’insigne de groupe des utilisateurs s’ils ne font plus partie du groupe correspondant.

Notez que vous n’avez pas besoin d’exécuter ce script régulièrement. Il s’agit d’une correction ponctuelle pour les anciens utilisateurs concernés. Prenez une sauvegarde par précaution avant de l’exécuter.

User.joins("LEFT OUTER JOIN group_users ON group_users.user_id = users.id AND group_users.group_id = users.flair_group_id").where(group_users: { id: nil }).where.not(flair_group_id: nil).update_all(flair_group_id: nil)

Salut @vinothkannans,

Merci ! Je te tiendrai informé une fois que nous aurons exécuté la requête et je te donnerai des mises à jour dans les prochains jours pour vérifier qu’il n’y a pas d’incohérence entre les relations des flairs et des groupes par la suite.

1 « J'aime »

https://github.com/discourse/discourse/pull/14367

De plus, j’ai poussé une autre correction dans le commit ci-dessus. Assurez-vous de mettre à niveau votre site une fois qu’il aura été fusionné.

1 « J'aime »

Super, bien sûr, je vais examiner les prochains commits dans la section de mise à niveau.
Devons-nous attendre la requête SQL mentionnée ci-dessus ou pouvons-nous procéder sans attendre qu’elle soit fusionnée dans notre instance Discourse ?

Vous pouvez exécuter la commande après la mise à niveau.

2 « J'aime »