SSO を使用しており、誰かがアカウントを閉じると、API を通じて Discourse アカウントも削除しています(投稿がある場合は匿名化します)。
しかし、どうやら何かおかしいようです。この処理中に 403 エラーが発生しているのです。少し調べてみると、API 呼び出しから返されたエラーメッセージは以下の通りでした:
{
"http_code": 403,
"body": "{\"deleted\":false,\"message\":\"User XXX has 0 posts, so they can't be deleted.\"}"
}
しかし、投稿数が 0 なら削除できるはずです。この特定のアカウントの情報を確認すると、確かに投稿はありません:
ただし、Discobot へのプライベートメッセージ(チュートリアル用)が存在します。
つまり、ここにはいくつかの問題があると考えています:
- ユーザーの削除を拒否したエラーメッセージは公開投稿のみをカウントしていますが、プライベートメッセージも含めるべきではないでしょうか?
- 実際、プライベートメッセージがアカウントの削除を妨げるべきなのでしょうか?公開トピックにおけるアカウント削除が議論の文脈を複雑にするという理屈は理解できますが、プライベートメッセージの場合はその根拠がそれほど強固ではないように思えます。
- 前の質問に対する答えが「はい」(つまり、プライベートメッセージがあってもアカウント削除を妨げるべき)である場合、Discobot へのメッセージもカウントされるべきでしょうか?私の意図は、多くの人がチュートリアルを通じて Discobot に PM を送るため、チュートリアルを行っただけで実際に参加していない多くのアカウントを事実上削除できなくなってしまう点です(これはおそらく
delete_user_max_post_age 日後にのみ真実になるかもしれませんが、それでも問題です)。
最後に、これが 1. と関連しているかはわかりませんが、このユーザーの API 情報を確認すると以下が返されます:
post_count: 0
can_be_deleted: 1
can_delete_all_posts: 0
しかし、実際にはこのユーザーは削除できません。したがって、can_be_deleted のロジックも公開投稿のみをカウントしているのかもしれません。
「いいね!」 4
よく調べましたね!少なくともエラーメッセージを修正すべきです。
"body": "{\"deleted\":false,\"message\":\"User XXX has 0 posts, so they can't be deleted.\"}"
以下のように変更すべきです。
User has x post(s), so they can't be deleted.
また、この状況が何度か発生していることから、状況をヒントとして含めるべきでしょう。
User has x post(s), either public posts or personal messages, so they can't be deleted
「いいね!」 3
完了しました。また、メッセージ内の誤った投稿数も修正しました。
「いいね!」 4
@vinothkannans さん、ありがとうございます! 
また、can_be_deleted が PM(プライベートメッセージ)が存在するため実際には削除できないアカウントでも「削除可能」と表示されている問題についても確認していただくことは可能でしょうか?現状では、まずユーザー削除を試み、それが失敗した場合に匿名化にフォールバックするという対応を強いられており(can_be_deleted を信頼できないため)、この点の改善を期待しています。
「いいね!」 2
griffin
(Jonathan Griffin)
6
以下のトピックで指摘されている問題が、このトピックで議論されている問題と何らかの関連がある可能性はありますか?
「いいね!」 2
codinghorror
(Jeff Atwood)
クローズされました:
7
このトピックは 3 日後に自動的に閉鎖されました。新しい返信は受け付けておりません。