削除されたユーザーを再度招待

おそらくエッジケースですが、API エンドポイント(/invites.json)をテストしている間はすべて正常に動作していました。その後、招待されたユーザーを削除すると、そのエンドポイントから 422 応答が返されるようになりました。データエクスプローラーで確認すると、そのユーザーは存在しなくなっていますが、招待テーブルにはまだ招待がリストされています。

以前に削除されたメールアドレスを持つユーザーを招待することは可能でしょうか?

「いいね!」 4

こんにちは、ようこそ!確認ですが、招待されたユーザーは、あなたが削除する前に招待を受け入れ、アカウントを作成していましたか?

「いいね!」 1

ありがとう!はい、招待を受け入れ、その後アカウントを削除しました。

「いいね!」 1

再現できていません。もしかすると、おっしゃる意図を誤解しているのかもしれません(十分にあり得ます)。期待される動作と実際の動作の違いについて、もう少し詳しく説明していただけると助かります。

使用環境は以下の通りです:

バージョン: 2.7.0beta7
OS: Ubuntu 20.04.1 LTS

以下の手順を実行しました:

  • UI(管理 > ユーザー > 招待送信)から、特定のメールアドレスを持つユーザーを招待
    • 招待オプションで「特定のメールアドレスに限定」を選択
  • 指定したメールアドレスから、別のシークレットウィンドウで招待を受け入れる
  • 元のウィンドウで管理者ユーザーとして、新規登録されたユーザーを削除
  • Postman を使用して https://example.dev/u/my-dev-user/invited.jsonGET リクエストを送信
    • お使いのエンドポイントはこれでしょうか?/invites.json について触れていましたが、こちらでは常に 404 が返り、存在しないようです。

ユーザーを削除した後に以下のレスポンスを受け取りました。ユーザーを削除したため、保留中・利用済み・期限切れがすべて 0 になるのは期待通りの結果です:

{
    "invites": [],
    "can_see_invite_details": true,
    "counts": {
        "pending": 0,
        "expired": 0,
        "redeemed": 0,
        "total": 0
    }
}

可能です。上記で削除した同じメールアドレスを、問題なく再度招待しました。

「いいね!」 2

すみません、エンドポイントを指定すべきでした。Discourse API Docs

私が行った手順は以下の通りです:

  • POST エンドポイント Discourse API Docs を使用してユーザーを招待
  • メールで招待を受け入れる
  • 管理者としてログインし、ユーザーを削除
  • 再度ステップ 1 でユーザーを招待しようとする。今回は 422 応答が返り、エラーとして以下の内容が表示されます:```
    {
    "failed": "FAILED"
    }
「いいね!」 2

あ、追伸です。ご説明いただいた通り、招待機能は管理インターフェースからは正常に動作しますが、私が使用している POST エンドポイントからは動作しません。

「いいね!」 1

おお、わかりました、これで明確になりましたね。はい、この問題は現在再現可能です。

API を介して POST リクエストを送信することで、新規のメールアドレスに対して通常の招待を送信できます。
期待通りに以下のレスポンスが返されます:

リクエスト: https://example.dev/invites.json?email=example%2Bsomething@hey.com
実際のレスポンス

{
    "id": 7,
    "invite_key": "inviteKEY",
    "link": "https://example.dev/invites/inviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:57:08.602Z",
    "updated_at": "2021-04-26T23:57:08.602Z",
    "expires_at": "2021-05-26T23:57:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}
  • その後、別の場所でログインし、そのユーザーの招待を受け入れます。
  • 次に、管理者として再度ログインし、メール: example+something@hey.com のユーザーを削除します。
  • その後、同じ POST リクエストを API に再送信して、そのユーザーを再度招待します。

リクエスト: https://example.dev/invites.json?email=example%2Bsomething@hey.com
期待されるレスポンス

{
    "id": 8,
    "invite_key": "newinviteKEY",
    "link": "https://example.dev/invites/newinviteKEY",
    "email": "example+something@hey.com",
    "emailed": true,
    "custom_message": null,
    "created_at": "2021-04-26T23:59:08.602Z",
    "updated_at": "2021-04-26T23:59:08.602Z",
    "expires_at": "2021-05-26T23:59:08.594Z",
    "expired": false,
    "topics": [],
    "groups": []
}

実際のレスポンス

{
    "failed": "FAILED"
}
「いいね!」 3

ああ、良かった、私だけじゃなかったんですね :slight_smile: 私はこれに初めて触れるのですが、これは今すぐバグとして報告されるべきでしょうか、それとも GitHub などの別の場所に投稿するべきでしょうか?

「いいね!」 1

これでレポートとして問題ないはずです!二人で協力すれば、バグレポートの基準をほぼ満たせていると思います。

そして、解説や回避策、あるいは修正方法を提供できる誰かが、どうすればよいかを教えてくれることを願っています。

「いいね!」 6

@hcw-rohan @weallwegot このバグは #12927 で修正されました。

こんにちは、

バグ修正が元に戻されたか、もう機能しなくなったのかもしれません。本日、このバグに遭遇しました。以下の手順で問題を特定しました。

  • 管理画面でユーザーを削除
  • API を介してそのユーザーを招待
  • 失敗メッセージが表示された

  • 削除されたユーザーの保留中の招待を削除
  • API を介して削除されたユーザーを再度招待
  • 成功メッセージが表示された
  • 招待メールを受信し、リンクをクリックしたが、「申し訳ありません。この招待は、既存のアカウントを持たない新規ユーザー向けです」という警告が表示された
  • API も管理画面も、削除されたユーザーを検出できない
  • 最後に、招待リンクをシークレットウィンドウで開いてみると、新規ユーザーとしてログインできた。これはクッキーに関する問題かもしれない

  • API を介して新しいユーザーを追加
  • 成功メッセージが表示された

これが参考になれば幸いです。

こんにちは、Greg さん。

バグの再現を試みましたが、私の環境では削除されたユーザーを再度招待することはできました。メール招待とリンク招待の両方で試しました。

招待ページにアクセスした際に、ログインしていないことを確認されましたか?このメッセージを表示するコードパスは一つだけあり、明らかな問題は見当たりません。