承認のためにXユーザーを通知しますが、見つかりません

これはバグのようですが、再現方法がわかりません。

次のような通知(PM)を受け取ります。

しかし、「確認する」リンクをクリックしても、保留中のユーザーはいません。 /admin/users では、メールアドレスを検証していないユーザーがいくつか表示されます。

通知が間違った数を生成しているのか、承認待ちのユーザーが検索しても表示されないのか、あるいはメールを検証していないユーザーが承認待ちとして通知にはカウントされるが、承認にはカウントされないのか、どちらとも判断できません。

「いいね!」 3

お節介かもしれませんが、allow_new_registrations はチェックが外れていますか? must_approve_users 設定が有効になっていることは明らかですが、登録が無効になっている場合にそれがどのように影響されるかはわかりません。 :thinking: アカウント作成を無効にするには、登録設定が優先されると思いますが。いや、それも意味が通らないな…

おそらく当たり前のことだと思いますので、ご協力いただけると幸いです。

はい、どちらもチェックされています。一部のユーザーは登録および承認されています。問題は、通知で主張されている数と、待機中と主張されている数が一致しないことです。5人と表示されたのに、過去数日間で2人しかいませんでした。

「いいね!」 1

実に奇妙です。承認リクエストが送信された(カウントされた)後に、ユーザー登録の何かが拒否されているかのようです…

「いいね!」 3

レビュー済みのアイテムをすべて表示したときにレビュー済みのユーザーが表示されるか、またはスタッフログから表示されるか? :person_shrugging:

レビュー対象アイテムがすでにレビュー済みで何も表示されないというPM/リマインダーをよく受け取ります。

私が(またはサイトの所有者が)それらに対応する前に、他の誰かがユーザーを承認したことが問題だと仮定しましたが、そのように数字を合わせることができません)。

登録が承認される前に、ユーザーはアカウントを削除できますか?

わからない? そうは思わない。なぜなら、それをするにはログインする必要があるが、承認されるまでログインできないからだ(ただし、コードなどを確認したわけではない)。

バグレポートを提出する前にこのトピックを見つけたので、追加します。

要約すると、通知のクエリが間違っています。なぜなら、拒否されたユーザーもカウントしているからです。

通知:承認待ちのユーザーが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キューに渡すと、実際に承認が必要なユーザー(ステータス0)が2人、すでに拒否されたユーザー(ステータス2)が14人見つかります。

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

私も同じ問題が発生しており、サポートからこちらへ案内されました。

私はこのアカウントの唯一のスタッフまたは管理者であるため、これは別の管理者が承認したわけではなく、明らかにこのバグです。

これら 3 つの通知すべてについて、「保留中のキュー」をクリックしましたが、承認を待っているユーザーはいませんでした。

「いいね!」 2

最近、新規ユーザーの承認機能をオンにしました。数は非常に少なく、洪水というよりはしずくのようなものです。通知が届くことは 100% 再現可能で、ユーザーを承認(通常は承認)すると、約 1 分以内に新しい「幽霊」通知が届きますが、実際にはレビューキューは空の状態で始まっています。

これはおそらく競合状態(レイスコンディション)なのではないでしょうか。

キューに表示されていないユーザーを検索し、管理者ページから直接承認するには、データエクスプローラークエリを使用できます。

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

は、決して新しいユーザーではない1人のユーザーを返しました。

参加日:2021年4月9日
最後の投稿:4月16日
閲覧日:4月16日
閲覧数:1308
信頼レベル:メンバー

Hmm、手動で承認できません。何か問題があります!

編集:私だけではありません。この新しいトピックをご覧ください:ユーザーのプロフィールにある承認ボタンが機能しない

詳細 - ここはオフトピックです

管理画面では承認ボタンが表示されますが、押しても何も起こりません。ブラウザのコンソールでは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

現在、スタータープランを利用しているため、データエクスプローラーを使用できません。そのため、承認を待っているユーザーがいるのに、自分には見えていないのではないかと心配になってきました。

通知メッセージのタイトルで示された数以上のユーザーがいたことは一度もありません。メッセージには「1」とあり、実際に確認できたのも1人だけです。

Data Explorer がなくても、未承認のユーザーを効率的に見つけることができます。ユーザーディレクトリは、/admin/users ページの右上にあるボタンを使ってエクスポートできます。

そして、好きなツールでそのファイルを開き、approvedfalse のユーザーを確認してください。私は Excel を使いましたが、実際にはユーザーは1人だけであることがわかります。

「いいね!」 1

@Moin すごく助かりました!なぜ私がその発想に気づかなかったのでしょう。

ああ、エクスポートを見ると、承認されていないユーザーが実際にいることがわかります!にもかかわらず、レビューページはまだ空のままです:

これは深刻なバグのようです。もし誰も対応していなかったら、これらのユーザーは非常に苛立っていたでしょう。彼らを承認するために検索する前に、まず Discourse に、/review に表示されないというバグの調査を任せてみましょう。

「いいね!」 1

アカウントは有効化されましたか?私も、メールアドレスがまだ確認されていないユーザーが数人いることがあります。メールアドレスの確認後にのみスタッフの承認(=時間)が必要となるのは、理にかなっています。