Las tarjetas de usuario para visitantes anónimos desaparecen inmediatamente con "500 Internal Server Error" en `card.json?include_post_count_for`

Hola, no estoy seguro de cuánto tiempo ha estado sucediendo esto, y solo puedo reproducirlo en mi instancia de Discourse autoalojada, que acabo de actualizar a la última versión hasta ahora.

Cuando un visitante anónimo hace clic en el avatar de cualquier usuario, el contorno de la tarjeta de usuario aparece durante unos milisegundos y luego desaparece inmediatamente. La consola de errores F12 muestra:

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

Esto también sucede en modo seguro.

No tengo habilitada la configuración hide user profiles from public (ocultar perfiles de usuario al público), pero sí probé a habilitarla hace unos días, no estoy seguro de si eso tiene algo que ver.

Parece que esto podría estar relacionado con tus esfuerzos para incluir el recuento de publicaciones en la tarjeta de usuario. ¿Creaste un plugin para esto al final?

No, nunca logré que eso funcionara. En cualquier caso, eso habría estado deshabilitado en modo seguro.

El número ?include_post_count_for=xxxxx es el número del ID del tema, no del usuario.

Asumí que la función que falla era para el botón “X publicaciones en este tema” que aparece en la tarjeta de un usuario.

El modo seguro solo deshabilita el código del lado del cliente y deja algunas cosas del lado del servidor en su lugar, por lo que aún podría ser un plugin, incluso si ocurre en modo seguro. Hay una publicación reciente con más información aquí Safe-mode failed with a plugin - #4 by david

No puedo replicar este problema en mi sitio de prueba. ¿Tienes algún plugin/configuración adicional/algo inusual que pueda estar teniendo un impacto? ¿Hay más información en /logs sobre el error?

Hmm, gracias por eso, parece que tienes razón, fue debido a este plugin:

Pinging @pfaffman

Mensaje (184 copias reportadas)

NoMethodError (método `in_any_groups?' indefinido para 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 Me gusta

Lo he pasado a #soporte ya que es un plugin de terceros. :+1:

2 Me gusta

¿Este problema persiste después de que actualizaste?

Con la versión original del plugin que no se modificó durante años, nunca noté este problema. Luego, cuando la actualización rompió los mensajes privados entre usuarios, deshabilité el plugin. Y ahora, desde que lo volví a habilitar con sus últimas correcciones, es cuando noté este problema.

¿Así que el problema persiste?

El problema de que las tarjetas de usuario desaparezcan para los usuarios anónimos ocurre mientras 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á habilitado y se resuelve cuando el plugin se deshabilita.

1 me gusta

Creo que este error ya se ha corregido. Actualiza si aún no lo has hecho.

Confirmado, ¡gracias!

1 me gusta

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