Notificação alega X usuários para aprovação, mas nenhum é encontrado

Isso parece um bug, mas não consigo ver como reproduzi-lo.

Recebo uma notificação PM que diz:

Mas quando clico no link de revisão, não há usuários pendentes. Em /admin/users, vejo alguns usuários que não validaram seus endereços de e-mail.

Não consigo dizer se a notificação está produzindo o número errado, ou se de alguma forma existem usuários aguardando aprovação que não estão aparecendo ao procurá-los, ou se de alguma forma usuários que não validaram o e-mail estão sendo contados como pendentes para notificações, mas não para aprovação.

3 curtidas

Não que eu queira ser óbvia, mas por acaso o allow_new_registrations está desmarcado? Claramente você tem a configuração must_approve_users habilitada e não tenho certeza de como isso é afetado se o registro estiver desabilitado. :thinking: Eu pensaria que a configuração de registro substituiria qualquer criação de conta, mas a desabilitaria. Não, isso também não faz sentido…

É quase certo que seja algo óbvio, então agradeço sua ajuda.

Sim, ambos estão marcados. Algumas pessoas estão sendo registradas e aprovadas. É apenas que o número que alegou estar esperando não corresponde ao número alegado na notificação. Disse-me 5, e só houve 2 nos últimos dias.

1 curtida

muito estranho mesmo. parece algo no registro do usuário que está sendo rejeitado após a solicitação de aprovação ser enviada (contada) para revisão…

3 curtidas

Existem usuários revisados quando você mostra todos os itens revisados, ou talvez nos logs da equipe? :person_shrugging:

Frequentemente recebo mensagens privadas/lembretes de itens revisáveis que já foram revisados, então nada aparece.

Eu assumi que o problema era que outra pessoa aprovou os usuários antes que eu (ou o proprietário do site) chegasse a eles, mas não consigo fazer os números baterem dessa forma).

Um usuário pode excluir sua conta antes que o registro seja aprovado?

Talvez? Acho que não, pois eles precisariam fazer login para fazer isso e eles não podem fazer login até serem aprovados (mas eu não verifiquei o código nem nada parecido)

Encontrei este tópico ao pesquisar antes de registrar um bug, então estou adicionando a ele.

Resumo: A consulta para a notificação está errada porque conta os usuários rejeitados também.

Notificação: 16 usuários aguardando aprovação, clique no link, veja apenas 2.

A consulta usada para a notificação é esta

puts AdminUserIndexQuery.new(query: "pending", stats: false).find_users_query.to_sql

SELECT "users".* FROM "users"
WHERE (suspended_till IS NULL OR suspended_till <= '2023-11-13 11:05:23.225614')
AND "users"."approved" = FALSE
AND "users"."active" = TRUE
ORDER BY users.created_at DESC,users.username

que, no meu caso, me dá 16 usuários

[4479, 4472, 4456, 4446, 4443, 4430, 4302, 4291, 4206, 4199, 4178, 4168, 4131, 4061, 3677, 3642]

Jogando esses IDs na fila do Reviewables, obtenho 2 usuários que realmente precisam ser aprovados (status 0) e 14 usuários que já foram rejeitados (status 2)

ReviewableUser.where(type: 'ReviewableUser')
  .where(target_id: ids)
  .pluck(:target_id, :status)

[[3642, 2], [3677, 2], [4061, 2], [4131, 2], [4168, 2],
[4178, 2], [4199, 2], [4206, 2], [4291, 2], [4302, 2],
[4430, 2], [4443, 2], [4446, 2], [4456, 2], [4472, 0], [4479, 0]]
2 curtidas

Alguém reclamou disso hoje. Antes de encontrar tudo isso, eu “resolvi” o problema mais ou menos assim:

bad=User.where(approved: false);
bad.each do |user| puts "https://community.open-emr.org/admin/users/#{user.id}/#{user.username}"; end;

Isso imprime as URLs de administrador para todos os usuários para que você possa aprová-los ou excluí-los lá, eu acho.

Então, acho que isso ainda é um bug.

Ah, e então:

ids=bad.pluck(:id);
ReviewableUser.where(type: 'ReviewableUser')
  .where(target_id: ids)
  .pluck(:target_id, :status)

Agora retorna algo como isto:

=> [[4610, "rejected"], [4527, "rejected"], [4643, "rejected"], [4648, "rejected"]]

Então talvez esses precisem ser excluídos de ReviewableUser?

Ou talvez apenas excluir os usuários?

2 curtidas

Como moderador (não administrador), consegui listar os usuários rejeitados na Fila de Revisão não filtrada. Mas não os encontrei na seção Usuário nem acessei o editor de usuários para usuários rejeitados a partir da Fila de Revisão.

Estes são os parâmetros de Filtro usados para a fila de Revisão para
https://gramps.discourse.group/review?additional_filters={}&sort_order=score&status=rejected&type=ReviewableUser

Portanto, os moderadores precisam ser capazes de encontrar usuários “Rejeitados” e com status de aprovação “Não” nas abas de Usuário ou ser capazes de navegar para o editor de usuários a partir da Fila de Revisão.

1 curtida

Estou enfrentando o mesmo problema e fui direcionado aqui pelo suporte.

Sou o único funcionário ou administrador da conta, então com certeza se trata deste bug e não de outro administrador tendo aprovado os usuários.

Para todas as três notificações, quando cliquei na fila pendente, não havia nenhum usuário aguardando aprovação:

2 curtidas

Recentemente, ativei a aprovação para novos usuários. Recebo muito poucos — é um gotejamento, não uma inundação. É 100% reproduzível que recebo a notificação, aprovo o usuário (geralmente aprovo) e, em seguida, dentro de cerca de um minuto, recebo uma nova notificação fantasma, com a fila de revisão realmente estando vazia novamente.

Parece que talvez seja uma condição de corrida.

Você pode usar uma consulta do explorador de dados para encontrar o usuário que não aparece na fila e aprová-lo diretamente na página de administração dele.

SELECT id as user_id
FROM users
WHERE approved = false
AND active = true

Foi isso que fiz recentemente. Também recebo essa mensagem a cada 7 dias. Então, usei a consulta e este foi o resultado:

E verifiquei na página de administração dos usuários:

Mas ainda preciso descobrir por que o botão não funciona no meu caso. Ainda não tive chance de analisar isso.
Espero que o botão funcione para você. Acho que há mais de um bug que resulta nessas notificações, mas sem usuários na fila. O RGJ encontrou algo relacionado a usuários rejeitados; eu reportei um caso em que alguns usuários existentes não são aprovados quando a configuração está habilitada.

Talvez eu tenha algo semelhante, embora sua busca ali, que no seu caso corresponde a um chat, no meu caso não corresponda a nada além do usuário. A consulta do explorador

SELECT id as user_id
FROM users
WHERE approved = false
AND active = true

retornou um usuário que de forma alguma é novo:

Entrou em 9 de abr. de 2021
Última postagem em 16 de abr.
Visto em 16 de abr.
Visualizações: 1308
Nível de confiança: membro

Hmm, não consigo aprová-los manualmente. Algo está errado!

Edição: Não sou o único — veja este novo tópico: O botão de aprovação no perfil do usuário não funciona

detalhes - OT aqui

Na interface de administração, vejo o botão Aprovar, clico nele, mas nada acontece. No console do navegador, vejo um erro 500.

requestedUrl:
“/admin/users/332/approve”
responseText:
"<!DOCTYPE html>\n<html>\n<head>\n <title>Ops - Erro 500</title>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n</head>\n<body>\n <h1>Ops</h1>\n <p>O software que alimenta este fórum de discussões encontrou um problema inesperado. Pedimos desculpas pelo inconveniente…

1 curtida

Agora estou mais preocupado porque estamos no plano Starter, então não posso usar o Explorador de Dados. Isso me faz pensar que talvez haja usuários aguardando aprovação, mas eu simplesmente não consigo vê-los.

Nunca notei mais usuários do que o título da mensagem que me notificou indicava. A mensagem diz 1 e eu encontrei apenas 1.

Mas mesmo sem o Data Explorer, você pode encontrar usuários não aprovados de forma eficiente. Você pode exportar seu diretório de usuários usando o botão no canto superior direito de /admin/users.

Em seguida, abra o arquivo com o programa que preferir para verificar os usuários onde approved está definido como false. Usei o Excel e você pode ver que há realmente apenas um usuário:

1 curtida

@Moin, tão útil! Por que eu não pensei nisso?

Nossa, a exportação mostra que usuários que não foram aprovados! Mesmo que a página de revisão ainda esteja vazia:

Isso parece ser um bug sério. Esses usuários teriam ficado extremamente frustrados se ninguém nunca tivesse atendido a eles. Antes de procurá-los para aprová-los, vou dar ao Discourse a chance de investigar o bug que faz com que eles não apareçam em /review.

1 curtida

As contas deles foram ativadas? Às vezes, também tenho alguns desses usuários porque eles ainda não verificaram o endereço de e-mail. E faz sentido que eles exijam apenas a aprovação da equipe (=tempo) após a confirmação do e-mail.