Les cartes utilisateur pour les visiteurs anonymes disparaissent immédiatement avec une "Erreur interne du serveur 500" dans `card.json?include_post_count_for`

Salut, je ne suis pas sûr depuis combien de temps cela se produit, et je ne peux le reproduire que sur mon instance Discourse auto-hébergée, que je viens de mettre à jour vers la dernière version à l’heure actuelle.

Lorsqu’un visiteur anonyme clique sur l’avatar d’un utilisateur, le contour de la carte utilisateur apparaît pendant quelques millisecondes puis disparaît immédiatement. La console d’erreurs F12 affiche :

GET   https://example.com/u/UserName/card.json?include_post_count_for=xxxxx

Status  500 Internal Server Error
Version  HTTP/2
Transferred  294 B (46 B size)
Referrer Policy  strict-origin-when-cross-origin
Request Priority  Highest

Cela se produit également en mode sans échec.

Je n’ai pas activé le paramètre hide user profiles from public (masquer les profils utilisateurs du public), mais je l’ai testé il y a quelques jours, je ne suis pas sûr que cela ait un rapport.

Cela semble lié à vos efforts pour inclure le nombre de publications sur la carte utilisateur. Avez-vous finalement créé un plugin pour cela ?

Non, je n’ai jamais réussi à faire fonctionner cela. Quoi qu’il en soit, cela aurait été désactivé en mode sans échec.

Le nombre ?include_post_count_for=xxxxx est le numéro de l’ID du sujet, pas de l’utilisateur.

J’ai supposé que la fonction qui échoue était celle du bouton « X messages dans ce sujet » qui apparaît dans une carte utilisateur.

Le mode sans échec ne désactive que le code côté client et laisse certaines choses côté serveur en place, il peut donc toujours s’agir d’un plugin même s’il se produit en mode sans échec. Il y a un article récent avec plus d’informations ici Safe-mode failed with a plugin - #4 by david

Je ne peux pas reproduire ce problème sur mon site de test. Avez-vous des plugins/paramètres supplémentaires/quelque chose d’inhabituel qui pourrait avoir un impact ? Y a-t-il plus d’informations dans /logs concernant l’erreur ?

Hmm, merci pour cela, il semble que vous ayez raison, c’était à cause de ce plugin :

Ping @pfaffman

Message (184 copies signalées)

NoMethodError (undefined method `in_any_groups?' for nil:NilClass)
lib/plugin/instance.rb:301:in `public_send'
lib/plugin/instance.rb:301:in `block (2 levels) in add_to_class'
app/serializers/user_card_serializer.rb:144:in `can_send_private_message_to_user'
(eval):18:in `_fast_attributes'
app/controllers/application_controller.rb:545:in `render_json_dump'
app/controllers/users_controller.rb:147:in `block (2 levels) in show'
app/controllers/users_controller.rb:140:in `show'
app/controllers/users_controller.rb:152:in `show_card'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/middleware/anonymous_cache.rb:367:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'

Backtrace

plugins/discourse-allow-pm-to-staff/plugin.rb:52:in `block (2 levels) in activate!'
lib/plugin/instance.rb:301:in `public_send'
lib/plugin/instance.rb:301:in `block (2 levels) in add_to_class'
app/serializers/user_card_serializer.rb:144:in `can_send_private_message_to_user'
(eval):18:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:343:in `as_json'
2 « J'aime »

Je l’ai transmis au Support car il s’agit d’un plugin tiers. :+1:

2 « J'aime »

Ce problème persiste-t-il après votre mise à niveau ?

Avec la version originale du plugin qui n’a pas été modifiée pendant des années, je n’ai jamais remarqué ce problème. Puis, lorsque la mise à jour a cassé les MP entre utilisateurs, j’ai désactivé le plugin. Et maintenant, depuis que je l’ai réactivé avec vos dernières corrections, c’est là que j’ai remarqué ce problème.

Alors, le problème persiste-t-il ?

Le problème de disparition des cartes utilisateur pour les utilisateurs anonymes se produit lorsque GitHub - pfaffman/discourse-allow-pm-to-staff: Allow private messages to be sent to staff for users who could otherwise not send private messages. est activé et se résout lorsque le plugin est désactivé.

1 « J'aime »

Je pense que ce bug est maintenant corrigé. Veuillez mettre à jour si ce n’est pas déjà fait.

Confirmé, problème résolu, merci !

1 « J'aime »

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