Les utilisateurs désactivés ne sont parfois pas désactivés

Je n’ai pas trouvé de moyen de reproduire ce problème, mais au cours du dernier mois, j’ai remarqué deux cas où un utilisateur était censé être désactivé (comme vu dans les journaux d’actions du personnel) mais pas réellement désactivé (l’utilisateur pouvait toujours se connecter).

Par exemple, celui-ci a été « désactivé » il y a 29 jours, mais a pu m’envoyer un message privé aujourd’hui (les seules autres actions du personnel après la désactivation sont « vérifier l’e-mail »)

Voici l’autre (un membre du personnel différent a pu « désactiver » le même utilisateur à nouveau 4 heures plus tard sans réactivation préalable) :

Je suis sur la version 2.9.0.beta9.

Ce problème est toujours en cours (il se produit plusieurs fois par mois). D’autres personnes l’ont-elles remarqué ?

Voici le code du contrôleur

Le StaffActionLogger fonctionne correctement, mais je me demande si quelque chose dans la méthode User.deactivate pourrait échouer.

Ce que les erreurs ont en commun, c’est qu’elles proviennent de requêtes API. Voici ce que j’utilise généralement :

PUT https://<MON_SITE>/admin/users/<ID_UTILISATEUR>/deactivate

Api-Username:<UTILISATEUR_ADMIN>
Api-Key:<CLE>

data: {"context":"/admin/users/<ID_UTILISATEUR>/<NOM_UTILISATEUR>"}

J’obtiens toujours “success: OK”

Y a-t-il d’autres journaux que je pourrais consulter ou d’autres choses que je pourrais essayer ?

Je suis sur la version 2.9.0.beta11

Cela se produit toujours de manière sporadique. Par exemple, cet utilisateur a été initialement « désactivé » le 23 août, mais je viens de remarquer maintenant qu’il était toujours actif et je l’ai effectivement désactivé.

Comment un utilisateur peut-il être désactivé deux fois (sans réactivation entre les deux) ?

J’ai une tâche quotidienne qui exécute une requête pour vérifier cette situation. Elle n’a rien retourné hier et cet utilisateur aujourd’hui, donc ce qui semble se passer, c’est que l’utilisateur a été correctement désactivé le 23 août, mais il a été réactivé hier (sans qu’aucune trace ne soit laissée).

Est-il possible de réactiver un utilisateur (via l’API ou l’interface utilisateur) sans laisser de trace ? Je suppose que cela ne pourrait se produire qu’en modifiant directement la base de données, ce que je suis certain de ne pas avoir fait (je suis le seul administrateur).

Cela peut arriver. Tout ce qu’un utilisateur désactivé doit faire pour réactiver son compte est de tenter de se connecter au site, puis de cliquer sur le lien dans l’e-mail d’activation qui lui est envoyé.

Lorsqu’un utilisateur désactivé tente de se connecter, il verra cette modale :

Discourse leur enverra un e-mail « Confirmez votre nouveau compte » :

Après avoir cliqué sur le lien dans l’e-mail, l’utilisateur sera connecté à Discourse.

C’est le comportement depuis aussi longtemps que je me souvienne. Je ne pense pas que ce soit un bug, mais je pourrais me tromper. Envoyer un e-mail « Confirmez votre nouveau compte » à un utilisateur qui a déjà un compte semble un peu étrange.

Modification : pour obtenir le comportement que vous recherchez, vous voudrez probablement « suspendre » l’utilisateur au lieu de le désactiver.

4 « J'aime »

Mystère résolu ! Merci, Simon. Vous pouvez clore ce fil de discussion.

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.