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.
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?
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
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’.