Ah, eu não me importaria nem um pouco. Seria ideal, mesmo que a ação principal do botão suspenso fosse ‘Excluir Usuário’ e, ao usar o menu suspenso, você pudesse selecionar ‘Suspender Usuário’ em vez disso. Dessa forma, supondo que a maioria não seja configurada com SSO, não haveria trabalho adicional para eles, mas para aqueles que estão nessa situação, haveria uma maneira rápida de suspender um usuário em vez de excluí-lo.
@Roman, você quer adicionar este à sua lista? Vejo que seria útil para sites com SSO.
Ao excluirmos usuários da fila de revisão, aparece um popup ‘404 Não Encontrado’:
(Apenas atualizamos para a versão mais recente, mas o problema persiste)
Vou dar uma olhada. Esses usuários estão aguardando aprovação?
Aprovação + exclusão de usuários que foram sinalizados por spam.
Acabei de perceber que também estou gerenciando outro site onde isso não acontece e tenho uma suspeita de que isso possa ter a ver com o Follow Plugin
, já que ele recentemente passou por algumas mudanças relacionadas a usuários excluídos. @merefield, o que você acha?
Sem ideia neste momento. Pode ser mais específico? Evidências de log?
Aba de Rede no Navegador: qual é a URL desse 404?
O único problema (menor) com o Plugin atualmente (que eu saiba) é que você precisa excluir as notificações associadas se desinstalar o plugin (script no OP do plugin). Isso não está relacionado a usuários excluídos.
Também não consegui reproduzir o problema localmente. A mensagem de erro me leva a pensar que o frontend está fazendo uma requisição AJAX para um endpoint que não existe. @bartv, você poderia compartilhar a aba de rede do seu navegador após realizar a ação de exclusão?
Gostaria de saber se parece com isso:
Vou fazer da próxima vez que acontecer ![]()
O plugin faz monkey patch no UserDestroyer, que é chamado quando você executa a ação de exclusão da fila de revisão. Isso parece suspeito:
Se de alguma forma following_ids incluir um ID inválido, User#find lançará uma exceção, e o usuário verá uma mensagem de “404 Não Encontrado”. Recomendo usar User.find_by(id: ...) em vez disso.
Não consigo dizer se foi isso que aconteceu no site de @bartv sem olhar dentro do banco de dados, então, na próxima vez que isso acontecer, recomendo verificar os following_ids do usuário sinalizado.
Obrigado. Isso é verdade e um destaque muito útil.
Ainda gostaria de ter os logs e confirmar essa URL 404.
Provavelmente existem ainda mais maneiras de tornar isso mais robusto.
Empurrado: FIX: make code invoked when deleting users more robust · discourse/discourse-follow@b523b3a · GitHub obrigado!
Mergulhamos um PR para adicionar essa ação. Confirmar, confirmar + excluir e confirmar + suspender agora estão agrupados:
Removi o plugin Follow e meu problema persistiu. No log do Rails, vejo:
Started PUT "/review/6793/perform/reject_user_block?version=0" for xx.xx.xx.xx at 2020-09-03 09:45:48 +0000
Processing by ReviewablesController#perform as */*
Parameters: {"version"=>"0", "reviewable_id"=>"6793", "action_id"=>"reject_user_block"}
Job exception: undefined method `strip' for nil:NilClass
Rendering text template
Rendered text template (Duration: 0.0ms | Allocations: 1)
Started GET "/t/global-variables/331828" for xx.xx.xx.xx at 2020-09-03 09:45:48 +0000
Processing by TopicsController#show as HTML
Parameters: {"slug"=>"global-variables", "topic_id"=>"331828"}
Completed 404 Not Found in 292ms (ActiveRecord: 0.0ms | Allocations: 124598)
ActiveRecord::RecordNotFound (Couldn't find all Topics with 'id': (1185852, 1185853, 1186324, 1186929, 1191089) [WHERE ("topics"."deleted_at" IS NULL)] (found 4 results, but was looking for 5).)
lib/plugin/instance.rb:393:in `block in on'
lib/discourse_event.rb:14:in `block in trigger'
lib/discourse_event.rb:13:in `trigger'
app/models/user.rb:1567:in `trigger_user_destroyed_event'
app/models/reviewable.rb:353:in `perform'
app/controllers/reviewables_controller.rb:192:in `perform'
app/controllers/application_controller.rb:340:in `block in with_resolved_locale'
app/controllers/application_controller.rb:340:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:336:in `call'
config/initializers/008-rack-cors.rb:25:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:22:in `call'
lib/middleware/request_tracker.rb:176:in `call'
A linha ActiveRecord::RecordNotFound é interessante, pois aparece toda vez que tento excluir um usuário da fila de revisão, sempre com os mesmos IDs de tópico.
Verifiquei os IDs dos tópicos e todos são posts que usam o plugin Events. E, de fato, um deles foi excluído. Estou confuso quanto ao motivo de essa ação da fila de revisão verificar esses tópicos.
@merefield, parece que estou voltando a incomodar vocês novamente, desculpe ![]()
EDIT: alterei o link do plugin
Isso é um plugin principal.
Espere, estou usando
git clone GitHub - angusmcleod/discourse-events: Allows you to manage events in Discourse · GitHub
Esse não é o correto (mais?) (acho que posso ter vinculado à página errada ali, corrigindo)
Isso são Eventos. @fzngagan, alguma opinião sobre isso?
Clicando nele, ele me direciona para o repositório correto.
Haha, não, o problema é em relação à exclusão de um usuário da Fila de Revisão.
Isso não está relacionado a um plugin; trata-se de um arquivo de biblioteca central.
Por que você acha que o Events está envolvido?


