Уведомление запрашивает пользователей X на утверждение, но ни одного не найдено

Похоже на баг, но я не могу понять, как его воспроизвести.

Я получил уведомление в личку со следующим текстом:

Однако при переходе по ссылке для проверки я не вижу ни одного ожидающего пользователя. В разделе /admin/users я вижу некоторых пользователей, которые не подтвердили свои адреса электронной почты.

Я не могу понять, неверно ли отображается количество в уведомлении, или существуют пользователи, ожидающие одобрения, которые не появляются при поиске, или же пользователи, не подтвердившие email, учитываются в уведомлениях как ожидающие, но не учитываются при одобрении.

3 лайка

Не хочу быть очевидной, но случайно ли allow_new_registrations снят? Очевидно, что у вас включена настройка must_approve_users, и я не уверена, как это влияет, если регистрация отключена. :thinking: Мне казалось, что настройка регистрации должна переопределять любое создание аккаунта и отключать его. Нет, это тоже не имеет смысла…

Это почти наверняка что-то очевидное, поэтому я приветствую вашу помощь.

Да, оба этих параметра отмечены. Некоторые люди регистрируются и получают одобрение. Просто число, заявленное как ожидающее, не совпадает с числом, указанным в уведомлении. Мне сообщили о 5, а за последние несколько дней их было только 2.

1 лайк

Действительно очень странно. Похоже, что что-то в регистрации пользователя отклоняется после того, как запрос на одобрение отправлен (учтён) на рассмотрение…

3 лайка

Когда вы показываете все проверенные элементы, там отображаются пользователи, прошедшие проверку, или, возможно, данные из журналов сотрудников? :person_shrugging:

Я часто получаю личные сообщения или напоминания о элементах, которые уже проверены, поэтому ничего не отображается.

Я предположил, что проблема в том, что кто-то другой одобрил пользователей до того, как до них добрались я (или владелец сайта), но я не могу заставить цифры сойтись таким образом).

Может ли пользователь удалить свой аккаунт до одобрения регистрации?

Возможно? Не думаю, так как для этого им нужно будет войти в систему, а войти они могут только после одобрения (хотя я код не проверял и ничего подобного).

Я нашел эту тему при поиске перед созданием отчёта об ошибке, поэтому добавляю информацию сюда.

TL;DR: запрос для уведомления составлен неверно, так как он учитывает и отклонённых пользователей.

Уведомление: 16 пользователей ожидают одобрения. Переходите по ссылке и видите только 2.

Вот запрос, используемый для уведомления:

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

В моём случае он возвращает 16 пользователей:

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

Если подставить эти ID в очередь Reviewables, я получаю 2 пользователей, которых действительно нужно одобрить (статус 0), и 14 пользователей, которые уже были отклонены (статус 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 лайка

Сегодня кто-то пожаловался на это. Прежде чем разобраться во всём, я «решал» проблему примерно так:

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

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

Так что, похоже, это всё ещё ошибка.

Кстати, а затем:

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

Теперь возвращает что-то вроде этого:

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

Так что, возможно, их нужно удалить из ReviewableUser?

Или, может быть, просто удалить пользователей?

2 лайка

Как модератор (не администратор), я мог просматривать список отклонённых пользователей в неотфильтрованной очереди рецензирования. Однако не мог найти их в разделе «Пользователи» и не имел доступа к редактору профиля отклонённых пользователей из очереди рецензирования.

Вот параметры фильтра, использованные для очереди рецензирования на

https://gramps.discourse.group/review?additional_filters={}&sort_order=score&status=rejected&type=ReviewableUser

Таким образом, либо модераторы должны иметь возможность находить пользователей со статусами «Отклонено» и «Нет» во вкладках «Пользователи», либо иметь возможность переходить к редактору профиля пользователя из очереди рецензирования.

1 лайк

У меня возникла та же проблема, и служба поддержки перенаправила меня сюда.

Я единственный сотрудник или администратор в аккаунте, так что это точно ошибка, а не то, что другой администратор их одобрил.

Для всех трёх этих уведомлений, когда я открывал очередь ожидающих, там не было пользователей, ожидающих одобрения:

2 лайка

Недавно я включил одобрение для новых пользователей. Их очень мало — это скорее капель, чем потоп. На 100% воспроизводимо: я получаю уведомление, одобряю пользователя (обычно одобряю), а затем примерно через минуту получаю новое мнимое уведомление, хотя очередь проверки на самом деле только что стала пустой.

Кажется, это может быть состояние гонки.

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

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

Вот что я сделал недавно. Я также получаю это сообщение каждые 7 дней. Поэтому я использовал запрос, и вот результат:

Затем я проверил это на странице администратора пользователей:

Но мне всё ещё нужно выяснить, почему кнопка не работает в моём случае. У меня пока не было возможности посмотреть на это.
Надеюсь, что у вас кнопка работает просто так. Я думаю, что существует более одной ошибки, которая приводит к появлению этих уведомлений, но при этом пользователей в очереди нет. RGJ нашёл информацию о отклонённых пользователях, а я сообщил о случае, когда некоторые существующие пользователи не одобряются, если включена соответствующая настройка.

Возможно, у меня была похожая ситуация, хотя ваш поиск в вашем случае соответствует чату, а в моём — ничего, кроме самого пользователя. Запрос в эксплорере:

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

вернул одного пользователя, который отнюдь не новый:

Присоединился 9 апреля 2021 года
Последнее сообщение 16 апреля
Последний визит 16 апреля
Просмотры 1308
Уровень доверия: участник

Хм, я не могу одобрить их вручную. Что-то не так!

Редактирование: Я не единственный — см. эту новую тему: Кнопка одобрения на профиле пользователя не работает

детали — оффтоп здесь

В интерфейсе администратора я вижу кнопку «Одобрить», нажимаю на неё, ничего не происходит. В консоли браузера я вижу ошибку 500.

requestedUrl:
“/admin/users/332/approve”
responseText:
"<!DOCTYPE html>\n<html>\n<head>\n <title>Упс — Ошибка 500</title>\n <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n</head>\n<body>\n <h1>Упс</h1>\n <p>Программное обеспечение, управляющее этим форумом обсуждений, столкнулось с неожиданной проблемой. Приносим извинения за неудобства…

1 лайк

Теперь я больше обеспокоен, так как мы находимся на тарифном плане Starter, поэтому не могу использовать Data Explorer. Это заставляет меня думать, что, возможно, есть пользователи, ожидающие одобрения, но я просто не вижу их.

Я никогда не замечал больше пользователей, чем указано в заголовке уведомления. В сообщении сказано «1», и я нашёл только одного.

Но даже без Data Explorer можно эффективно найти не одобренных пользователей. Вы можете экспортировать каталог пользователей, используя кнопку в правом верхнем углу страницы /admin/users.

Затем откройте этот файл в любой удобной программе и проверьте пользователей, у которых approved равно false. Я использовал Excel, и вы можете видеть, что на самом деле есть только один пользователь:

1 лайк

@Moin, как же это полезно, почему я сам об этом не подумал?

Чёрт возьми, экспорт показывает, что есть пользователи, которые не одобрены! Хотя страница проверки всё ещё пуста:

Это похоже на серьёзную ошибку. Эти пользователи были бы крайне расстроены, если бы никто не уделил им внимания. Прежде чем искать их вручную для одобрения, я дам Discourse шанс разобраться с ошибкой, из-за которой они не отображаются в /review.

1 лайк

Были ли их аккаунты активированы? У меня тоже иногда есть несколько таких пользователей, так как они ещё не подтвердили свой адрес электронной почты. И логично, что они требуют утверждения со стороны сотрудников (=время) только после подтверждения адреса электронной почты.