Cartões de usuário para visitantes anônimos desaparecem imediatamente com "500 Internal Server Error" em `card.json?include_post_count_for`

Olá, não tenho certeza há quanto tempo isso está acontecendo e só consigo reproduzi-lo em minha instância Discourse auto-hospedada, que acabei de atualizar para a versão mais recente no momento.

Quando um visitante anônimo clica em qualquer avatar de usuário, o contorno do cartão do usuário aparece por alguns milissegundos e desaparece imediatamente. O console de erro F12 mostra:

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

Isso também acontece no modo de segurança.

Eu não tenho a configuração hide user profiles from public habilitada, mas testei habilitá-la há alguns dias, não tenho certeza se isso tem algo a ver com isso.

Parece que isso pode estar conectado aos seus esforços para incluir a contagem de postagens no cartão do usuário. Você acabou criando um plugin para isso?

Não, eu nunca consegui fazer isso funcionar. De qualquer forma, isso teria sido desativado no modo de segurança.

O número ?include_post_count_for=xxxxx é o número do ID do tópico, não do usuário.

Eu assumi que a função que está falhando era para o botão “X posts neste tópico” que aparece em um cartão de usuário.

O modo de segurança desativa apenas o código front-end e deixa algumas coisas do lado do servidor no lugar, então ainda pode ser um plugin, mesmo que ocorra no modo de segurança. Há uma postagem recente com mais informações aqui Safe-mode failed with a plugin - #4 by david

Não consigo reproduzir este problema no meu site de teste. Você tem algum plugin/configurações extras/algo incomum que possa estar tendo um impacto? Há alguma outra informação nos /logs sobre o erro?

Hmm, obrigado por isso, parece que você está certo, foi devido a este plugin:

Chamando @pfaffman

Message (184 copies reported)

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 curtidas

Eu o encaminhei para o #suporte, pois é um plugin de terceiros. :+1:

2 curtidas

Este problema persiste depois que você atualizou?

Com a versão original do plugin, que permaneceu inalterada por anos, eu nunca notei esse problema. Então, quando a atualização quebrou as MPs entre usuários, eu desabilitei o plugin. E agora, desde que eu o reativei com suas últimas correções, é que notei esse problema.

Então o problema persiste?

O problema com o desaparecimento dos cartões de usuário para usuários anônimos ocorre enquanto o 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 e é resolvido quando o plugin é desabilitado.

1 curtida

Acredito que este bug foi corrigido agora. Por favor, atualize se ainda não o fez.

Corrigido, obrigado!

1 curtida

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