Notificações de "deve aprovar usuários" são acionadas incorretamente por usuários antigos

Durante as últimas semanas, alguns usuários problemáticos (banidos) têm criado contas com nomes de usuário ofensivos/inapropriados. Para evitar isso, ativei a configuração marcada como “A equipe deve aprovar todas as novas contas de usuário antes que elas possam acessar o site.” e ela realmente exige aprovação para todas as contas novas.

No entanto, de forma irritante, a cada poucas horas sou notificado sobre “usuários aguardando aprovação” para usuários antigos que entraram há meses ou até anos, muito antes dessa configuração ser ativada.

Clicando na notificação, vejo:

Há novas inscrições de usuários aguardando aprovação (ou rejeição) antes que possam acessar este fórum. Por favor, revise-as.

… mas clicando em “Por favor, revise-as” mostra que não há nenhuma:

Não há itens para revisar.

Procurando na lista admin/users/list/new, vejo que alguns usuários estão de fato listados como “não aprovados”. Não consigo encontrar nenhuma semelhança entre esses usuários “não aprovados”, exceto o fato de que todos eles foram criados antes da configuração ser ativada. Alguns deles têm “email principal: Não verificado”, enquanto outros são verificados.

Tentei aprovar cada um manualmente, mas preciso rolar centenas de “páginas” e não vejo uma maneira fácil de filtrar a lista por “não aprovado”.

Existe uma maneira rápida de marcar todos os usuários existentes como “aprovados”? Ou pelo menos impedir que as notificações sobre esses usuários antigos sejam enviadas?

2 curtidas

Você ainda está sofrendo com isso?

No final, eu encarei a situação e rolei a lista inteira de usuários (procurando manualmente por aqueles que tinham "Aprovado: Não"), depois entrei no perfil de cada um e os aprovei individualmente :sweat:

2 curtidas

Notei o mesmo comportamento e acho que descobri por que isso acontece (não por que esses usuários não aparecem na fila de revisão, mas por que eles não foram aprovados):

Pelo que entendi do código[1], quando você habilita ‘must_approve_users’, a maioria dos usuários criados antes da configuração ser habilitada deve ser aprovada:

Isso funcionou para a maioria dos meus usuários, mas alguns não foram marcados como aprovados.

Consulta do Explorador de Dados
SELECT
  id as UserID, approved
FROM
  users
ORDER BY id
UserID Approved
1 true
3 true
8 true
10 false
11 false
12 false
13 true

Quando você olha para a tabela reviewables, pode notar que os usuários com um ID de usuário correspondente ao target_id de uma mensagem de chat não foram aprovados.

Consulta do Explorador de Dados
SELECT id, target_id, target_type
FROM reviewables
ORDER BY target_id
id target_id target_type
6 9 ChatMessage
7 10 ChatMessage
8 11 ChatMessage
9 12 ChatMessage
1 2901 Post
2 2909 Post
5 2991 Post

Acho que é um bug que os usuários não sejam aprovados quando há um target_id correspondente que tem um target_type diferente de ‘user’.


  1. Tenho pouquíssimas habilidades de programação ↩︎

3 curtidas