Уведомления «необходимо одобрить пользователей» ошибочно срабатывают для старых пользователей

За последние несколько недель некоторые проблемные (заблокированные) пользователи создавали учётные записи с оскорбительными или неуместными именами. Чтобы предотвратить это, я включил настройку «Сотрудники должны утверждать все новые учётные записи пользователей перед предоставлением им доступа к сайту», и она действительно требует утверждения для всех новых учётных записей.

Однако, что довольно раздражает, каждые несколько часов я также получаю уведомления о «пользователях, ожидающих утверждения», касающихся старых пользователей, которые присоединились несколько месяцев или даже лет назад, задолго до активации этой настройки.

При нажатии на уведомление я вижу:

Есть новые регистрации пользователей, ожидающие утверждения (или отклонения) перед доступом к этому форуму. Пожалуйста, проверьте их.

… но при нажатии на «Пожалуйста, проверьте их» оказывается, что ничего нет:

Нет элементов для проверки.

При просмотре списка по адресу admin/users/list/new я вижу, что некоторые пользователи действительно помечены как «не утверждённые». Я не могу найти никаких общих черт между этими «не утверждёнными» пользователями, кроме того, что все они были созданы до включения этой настройки. У некоторых «основной адрес электронной почты: не подтверждён», у других — подтверждён.

Я пытался утвердить каждого вручную, но мне приходится прокручивать назад несколько сотен «страниц», и я не вижу простого способа отфильтровать список по статусу «не утверждён».

Есть ли быстрый способ пометить всех существующих пользователей как «утверждённых»? Или хотя бы предотвратить отправку уведомлений об этих старых пользователях?

2 лайка

Вы всё ещё страдаете от этого?

В конце концов я решился и пролистал весь список пользователей (вручную отбирая тех, у кого было «Одобрено: Нет»), затем зашёл в профиль каждого и одобрил их по отдельности :sweat:

2 лайка

Я заметил такое же поведение и, думаю, выяснил, почему это происходит (не то, почему эти пользователи не отображаются в очереди на рецензирование, а почему они вообще не были одобрены):

Насколько я понимаю код[1], при включении настройки ‘must_approve_users’ большинство пользователей, созданных до включения этой настройки, должны быть одобрены:

Это сработало для большинства моих пользователей, но некоторые не были помечены как одобренные.

Запрос Data Explorer
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

Если посмотреть на таблицу reviewables, можно заметить, что пользователи, чей ID совпадает с целевым ID сообщения чата, не были одобрены.

Запрос Data Explorer
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

Полагаю, это ошибка: пользователи не одобряются, если существует совпадающий target_id с target_type, отличным от ‘user’.


  1. У меня почти нет навыков программирования ↩︎

4 лайка